Anoop Sam John created HBASE-19047:
--------------------------------------

             Summary: 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
            Reporter: Anoop Sam John
            Assignee: Anoop Sam John
             Fix For: 2.0.0-alpha-4


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

Reply via email to