Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
1.4.0, 1.3.1, 2.0.0
-
None
Description
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.
Attachments
Attachments
Issue Links
- breaks
-
HBASE-28595 Losing exception from scan RPC can lead to partial results
- Resolved
- is broken by
-
HBASE-17489 ClientScanner may send a next request to a RegionScanner which has been exhausted
- Resolved