[
https://issues.apache.org/jira/browse/HBASE-19047?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16221572#comment-16221572
]
Anoop Sam John commented on HBASE-19047:
----------------------------------------
bq.Are we trying to hide Shipper functionality from CPs?
Yes. As Stack said.
The again assign what is returned from post hook. This is just an over
preventive mechanism. As per a comment fix from Duo.
" The core scanner being passed to hook is just closed and created a new using
Region#getScanner call and that is been returned...." There is no need to do
this way... Dont think any one will do this. Doing this below instance of
check and assign to shipper make no harm for sure. Even if we dont do this
shipped() call at all, there wont be functional issue. Only thing is the return
back of blocks to BC will be delayed unless the scan is over and closed. So we
can even avoid this extra check and assign after post hook also. What do u
say [~appy], [~Apache9], [~stack]?
bq.try (RegionScannerImpl scanner = (RegionScannerImpl) REGION.getScanner(new
Scan()))
Hmm ya.. Let me see the getScanner usages and avoid the redundant casting. Tks.
> 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
> Priority: Critical
> Fix For: 2.0.0-alpha-4
>
> Attachments: HBASE-19047.patch, HBASE-19047_V2.patch,
> HBASE-19047_V2.patch, HBASE-19047_V3.patch, HBASE-19047_V4.patch,
> HBASE-19047_V4.patch, HBASE-19047_V4.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)