[ https://issues.apache.org/jira/browse/HBASE-24321?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17099438#comment-17099438 ]
Duo Zhang commented on HBASE-24321: ----------------------------------- Reading the comment of ScanOptions, the intenion here is that, for complicated scan logic for compaction/flush, you should wrapper the InternalScanner? You can see the WriteHeavyIncrementObserver in hbase-examples module for more details. > Add writable MinVersions and read-only Scan to coproc ScanOptions > ----------------------------------------------------------------- > > Key: HBASE-24321 > URL: https://issues.apache.org/jira/browse/HBASE-24321 > Project: HBase > Issue Type: Improvement > Reporter: Geoffrey Jacoby > Assignee: Geoffrey Jacoby > Priority: Major > Fix For: 2.3.0 > > > Between HBase 1.x and 2.0, the RegionObserver pre*ScannerOpen coprocessors > were significantly changed so that the coproc implementer no longer has > access to the actual Scanner, just a ScanOptions object that can be changed > in limited ways. This is safer and prevents resource leaks and other bugs. > While ScanOptions provides support for changing TTL, KeepDeletedCells, and > MaxVersions, a fourth column family config parameter, MinVersions, appears to > have been missed. This prevents coproc implementers from changing MinVersions > dynamically. An example of this is PHOENIX-5645, which in the forthcoming > Phoenix 4.16 (based on HBase 1.x) will allow users to configure a moving > window where all versions are kept, and thus point-in-time queries are safe. > This cannot be put in the forthcoming Phoenix 5.1 (based on HBase 2.1 and > 2.2) because of the coproc changes. > Relatedly, preStoreScannerOpen lacks access to the Scan in HBase 2.0 and up. > This prevents coprocs from reading the Scan parameters to check if, for > example, a Scan has set the max time to a point in the past, and thus needs > to override KeepDeletedCells. This can lead to incorrect behavior when doing > point-in-time queries or using transactional engines that treat physically > committed HBase writes as logically uncommitted parts of a transaction. It's > also a correctness problem for PHOENIX-5645. Please note that only > _read-only_ access to the Scan from the store scanner coproc hook is in scope > for this change. -- This message was sent by Atlassian Jira (v8.3.4#803005)