[ 
https://issues.apache.org/jira/browse/HBASE-4197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13084964#comment-13084964
 ] 

Lars Hofhansl commented on HBASE-4197:
--------------------------------------

Yeah! :)

@Ted: Will you commit the patch attached to the review?

Note that this changes the externally visible interface of Coprocessors 
(RegionScanner instead of InternalScanner)... Just calling this out, so that 
there are no surprises later.


> RegionServer expects all scanner to be subclasses of HRegion.RegionScanner
> --------------------------------------------------------------------------
>
>                 Key: HBASE-4197
>                 URL: https://issues.apache.org/jira/browse/HBASE-4197
>             Project: HBase
>          Issue Type: Bug
>          Components: coprocessors
>    Affects Versions: 0.92.0
>            Reporter: Lars Hofhansl
>         Attachments: 4197-bigger.txt, 4197-v2.txt, 4197.txt, ScannerTest.java
>
>
> Returning just an InternalScanner from RegionObsever.{pre|post}OpenScanner 
> leads to the following exception when using the scanner.
> java.io.IOException: InternalScanner implementation is expected to be 
> HRegion.RegionScanner.
>         at 
> org.apache.hadoop.hbase.regionserver.HRegionServer.next(HRegionServer.java:2023)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:616)
>         at 
> org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:314)
>         at 
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1225)
> The problem is in HRegionServer.next(...):
> {code} 
>     InternalScanner s = this.scanners.get(scannerName);
> ...
>       // Call coprocessor. Get region info from scanner.
>       HRegion region = null;
>       if (s instanceof HRegion.RegionScanner) {
>         HRegion.RegionScanner rs = (HRegion.RegionScanner) s;
>         region = getRegion(rs.getRegionName().getRegionName());
>       } else {
>         throw new IOException("InternalScanner implementation is expected " +
>             "to be HRegion.RegionScanner.");
>       }
> {code} 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to