[
https://issues.apache.org/jira/browse/HBASE-3583?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13007744#comment-13007744
]
Mingjie Lai commented on HBASE-3583:
------------------------------------
Stack. Need your feedback for your first comments:
https://review.cloudera.org/r/1617/diff/1/?file=26436#file26436line1812
>>>>
My original purpose of this addition map is to have a way to obtain region name
from scanner id, then get region instance, in order to call corresponding
region coprocessors:
Result[] next(final long scannerId, int nbRows) {
// need to get to region to access coprocessors
...
}
There are several options can do it:
1) add a map along with original scanners map (as the 1st patch)
2) as you suggested, to change the meaning/data type of scanner id, but it will
impact other components, ie. client lib, etc.
3) instead of Map<InternalScanner>, just use Map<HRegion.RegionScanner> as
scanners. There are a lot of ugly thing like:
if (scanner instanceof HRegion.RegionScanner) {
...
}
so why not just using HRegion.RegionScanner directly.
4) ugly way: don't add anything, just use existing suff
if (scanner instanceof HRegion.RegionScanner){
...
HRegionInfo regionName = rs.getRegionName(); ...
}
<<<<
What do you think?
> Coprocessors: RegionObserver: ScannerNext and ScannerClose hooks are called
> when get() is invoked
> -------------------------------------------------------------------------------------------------
>
> Key: HBASE-3583
> URL: https://issues.apache.org/jira/browse/HBASE-3583
> Project: HBase
> Issue Type: Bug
> Components: coprocessors
> Affects Versions: 0.92.0
> Reporter: Mingjie Lai
> Assignee: Mingjie Lai
> Fix For: 0.92.0
>
> Attachments: HBase3583.patch
>
>
> RegionObserver upcalls are expected to be triggered by corresponding client
> calls.
> I found that if a HTable.get() is issued, ScannerNext, and ScannerClose hooks
> are also invoked.
> Here is the reason: HRegion.get() is implemented with an internal scanner:
> {code}
> InternalScanner scanner = null;
> try {
> scanner = getScanner(scan);
> scanner.next(results);
> } finally {
> if (scanner != null)
> scanner.close();
> }
> {code}
> where scanner.next, and scanner.close() are implemented with RegionObserver
> hooks.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira