Geoffrey Jacoby created HBASE-24321:
---------------------------------------

             Summary: 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
             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)

Reply via email to