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)