[
https://issues.apache.org/jira/browse/HBASE-19047?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mike Drob updated HBASE-19047:
------------------------------
Comment: was deleted
(was: Is it always safe to cast RegionScanner to Shipper? Is RegionScanner
something that we expect to be pluggable? I'm missing a lot of context here,
but that part of the patch stuck out to me.)
> CP exposed Scanner types should not extend Shipper
> --------------------------------------------------
>
> Key: HBASE-19047
> URL: https://issues.apache.org/jira/browse/HBASE-19047
> Project: HBase
> Issue Type: Sub-task
> Components: Coprocessors
> Reporter: Anoop Sam John
> Assignee: Anoop Sam John
> Fix For: 2.0.0-alpha-4
>
> Attachments: HBASE-19047.patch
>
>
> Shipper is a IA.Private interface and very much internal..
> Right now CP exposed RegionScanner is extending this and so exposing the
> shipped() method. This by mistake is called, can harm the correctness of the
> cells in the Results.
> preScannerOpen() allowing to return a new Scanner is also problematic now.
> This can allow users to create a Region scanner from Region and then wrap it
> and return back (Well same can be done by postScannerOpen also), it can so
> happen that the wrapper is not implementing the shipped() properly. In any
> way exposing the shipped () is problematic.
> Solution Steps
> 1. Remove preScannerOpen() , the use case I can think of is wrapping the
> original scanner. The original scanner can be created by Region.getScanner
> way only.. May be no need to remove this hook. Just remove the ability for
> it to return a RegionScanner instance. Call this with the Scan object and
> the CP can change the Scan object if they want.
> 2. Let RegionScanner not extending Shipper but only RegionScannerImpl
> implements this
> 3. We have ref to the RegionScanner created by core and let that be used by
> RegionScannerShippedCallBack when the post hook doing a wrap.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)