-
Type:
Bug
-
Status: Resolved
-
Priority:
Urgent
-
Resolution: Fixed
-
Component/s: Local/SSTable
-
Labels:None
-
Bug Category:Correctness - Transient Incorrect Response
-
Severity:Critical
-
Complexity:Challenging
-
Discovered By:Fuzz Test
-
Since Version:
OldFormatDeserializer’s hasNext() method can and will consume two Unfiltered from the underlying iterator in some scenarios - intentionally.
But in doing that it’s losing intermediate state of lastConsumedPosition. If that last block, when iterating backwards, only has two Unfiltered, the first one will be returned, and the last one won’t as the reverse iterator would incorrectly things that the deserisalizer is past the index block, despite still having one Unfiltered unreturned.