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

Karan Mehta commented on HBASE-18042:
-------------------------------------

bq. But it is ok to get any exception while closing a scanner because the 
ClientScanner will catch any exception from server in close().
There will be lot of unnecessary exceptions being generated and routed to the 
Client, which is not good. OpenTSDB does lot of RPC calls for fetching metrics 
data and it sometimes results in being winded up infinitely in these 
exceptions. If it's a single query then it might just work fine. Sometimes it 
returns duplicate results, since it sends out multiple OpenScannerRequests 
after getting confused by the exception. 

bq. I guess the problem for AsyncHBase is that it will also fetch data when 
opening a scanner, just like what we do in the new code in master and branch-1?
Yes that is true. See description for the exact behavior.

> Client Compatibility breaks between versions 1.2 and 1.3
> --------------------------------------------------------
>
>                 Key: HBASE-18042
>                 URL: https://issues.apache.org/jira/browse/HBASE-18042
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 1.3.1
>            Reporter: Karan Mehta
>            Assignee: Karan Mehta
>
> OpenTSDB uses AsyncHBase as its client, rather than using the traditional 
> HBase Client. From version 1.2 to 1.3, the {{ClientProtos}} have been 
> changed. Newer fields are added to {{ScanResponse}} proto.
> For a typical Scan request in 1.2, would require caller to make an 
> OpenScanner Request, GetNextRows Request and a CloseScanner Request, based on 
> {{more_rows}} boolean field in the {{ScanResponse}} proto.
> However, from 1.3, new parameter {{more_results_in_region}} was added, which 
> limits the results per region. Therefore the client has to now manage sending 
> all the requests for each region. Further more, if the results are exhausted 
> from a particular region, the {{ScanResponse}} will set 
> {{more_results_in_region}} to false, but {{more_results}} can still be true. 
> Whenever the former is set to false, the {{RegionScanner}} will also be 
> closed. 
> OpenTSDB makes an OpenScanner Request and receives all its results in the 
> first {{ScanResponse}} itself, thus creating a condition as described in 
> above paragraph. Since {{more_rows}} is true, it will proceed to send next 
> request at which point the {{RSRpcServices}} will throw 
> {{UnknownScannerException}}. The protobuf client compatibility is maintained 
> but expected behavior is modified.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to