Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
In order to fix HBASE-1485 and HBASE-29, it would be very helpful to have HFile and Memstore track their maximum and minimum timestamps. This has the following nice properties:
- for a straight Get, if an entry has been already been found with timestamp X, and X >= HFile.maxTimestamp, the HFile doesn't need to be checked. Thus, the current fast behavior of get can be maintained for those who use strictly increasing timestamps, but "correct" behavior for those who sometimes write out-of-order.
- for a scan, the "latest timestamp" of the storage can be used to decide which cell wins, even if the timestamp of the cells is equal. In essence, rather than comparing timestamps, instead you are able to compare tuples of (row timestamp, storage.max_timestamp)
- in general, min_timestamp(storage A) >= max_timestamp(storage B) if storage A was flushed after storage B.
Attachments
Attachments
Issue Links
- blocks
-
HBASE-1485 Wrong or indeterminate behavior when there are duplicate versions of a column
- Closed
-
HBASE-29 HStore#get and HStore#getFull may not return expected values by timestamp when there is more than one MapFile
- Closed
- is related to
-
HBASE-2248 Provide new non-copy mechanism to assure atomic reads in get and scan
- Closed