Details
-
Bug
-
Status: Resolved
-
Urgent
-
Resolution: Fixed
-
None
-
None
-
Critical
Description
DataTracker gives us an atomic View of memtable/sstables, but acquiring references is not atomic. So it is possible to acquire references to an SSTableReader object that is no longer valid, as in this example:
View V contains sstables
{A, B}. We attempt a read in thread T using this View.
Meanwhile, A and B are compacted to
, yielding View W. No references exist to A or B so they are cleaned up.
Back in thread T we acquire references to A and B. This does not cause an error, but it will when we attempt to read from them next.