You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Andrew Purtell (JIRA)" <ji...@apache.org> on 2013/06/03 21:10:20 UTC

[jira] [Resolved] (HBASE-8677) Problems of fetching results by scanner interface(startup multi REST servers)

     [ https://issues.apache.org/jira/browse/HBASE-8677?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andrew Purtell resolved HBASE-8677.
-----------------------------------

    Resolution: Invalid

If multiple hosts are specified, then RemoteHTable will round robin requests. This won't work with scanners, because scanners are stateful. (Yes, technically not RESTful...) When scanning, connect only to a single REST gateway.
                
> Problems of fetching results by scanner interface(startup multi REST servers)
> -----------------------------------------------------------------------------
>
>                 Key: HBASE-8677
>                 URL: https://issues.apache.org/jira/browse/HBASE-8677
>             Project: HBase
>          Issue Type: Bug
>          Components: REST
>    Affects Versions: 0.94.5, 0.95.0
>         Environment: CentOS 5.5/hadoop0.20.2/hbase0.94.5/zookeeper3.4.3
>            Reporter: Eric Huang
>
> These days, I test one of available clients REST. When I startup two REST servers and put these servers into Cluster instance using the REST client classes, I get the wrong results by getScanner interface. 
> Code like this(37, 38 are two rest servers):
>         Cluster cluster = new Cluster();
>         cluster.add("10.28.171.37", 8080);
>         cluster.add("10.28.171.38", 8080);
>         Client client = new Client(cluster);
>         RemoteHTable table = new RemoteHTable(client, "demotime");
>         
>         ResultScanner resultScanner = table.getScanner(new Scan());
>         for (Result result: resultScanner) {
>             System.out.println("Scan row["+        Bytes.toString(result.getRow())+"]:"+result);
>         }
> I find server-side codes of REST maybe the cause. They use "static final Map<String, ScannerInstanceResource> scanners" to cache the last scanner context, so if there are multi REST servers, client may navigate to the other server, which has not scanner conext of it and return the wrong results.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira