Details
-
Improvement
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
None
-
Reviewed
-
Description
RegionObserver.preStoreScannerOpen() doesn't have acces to current readpoint. This is crucial e.g. when creating a new StoreScanner.
Although it is possible to obtain the readpoint via following workaround:
((HStore)store).getHRegion().getReadpoint(IsolationLevel.READ_COMMITTED)
...it presumes some knowledge of HBase internals and is not a clear option for user.
The problem was introduced in HBASE-9754, where readpoint was introduced as an argument to StoreScanner constructor, but wasn't passed to the preStoreScannerOpen() hook in HStore.getScanner().
In our case it led to bug, when we were incorrectly using smallestReadpoint() instead, which made coprocessor missing data in some cases [1].