[
https://issues.apache.org/jira/browse/HBASE-24321?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17099489#comment-17099489
]
Duo Zhang commented on HBASE-24321:
-----------------------------------
{quote}
1. Wrapping an InternalScanner seems much riskier for a coprocessor author to
get right.
{quote}
I would say this is intentional. If you can not get things right through this
way then probably you should not do it. We have lots of assumptions in the
compaction code, so opening new options should be very very careful. We have
this in 1.x is not strong enough to convience me, or even opposite, as the
design here is to fix the broken behavior for 1.x. Please explain more about
the safety for adding these options to ScanOptions.
And for 2, a read only version is fine.
Thanks.
> 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)