Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
None
-
None
Description
If a Key with a Long.MAX_VALUE timestamp is the startKey of the Range passed to maximizeStartKeyTimestamp() or a Long.MIN_VALUE timestamp is the endKey of the range passed to minimizeEndKeyTimestamp() the returned Range will not have inclusive set to true for the start/end Key.
This was observed while using the VersioningIterator and table.scan.max.memory setting. When the scan range includes matching Keys of which one has the timestamp of Long.MAX_VALUE the table.scan.max.memory can be set such that a reseek will be performed starting with the Key that has a Long.MAX_VALUE timestamp. The result is that the Key with Long.MAX_VALUE will be returned from the first batch, and the value will not be considered when evaluating the second batch, since the Range will not be modified to be inclusive when calling IteratorUtil.maximizeStartKeyTimestamp(), leading to the next (matching) Key also being returned.
Attachments
Issue Links
- links to