Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
In the AsyncTable implementation, scanner next() calls use "hbase.client.scanner.timeout.period" as the rpc timeout. The reason is described in comments, and makes a lot of sense:
// As we have a call sequence for scan, it is useless to have a different rpc timeout which is // less than the scan timeout. If the server does not respond in time(usually this will not // happen as we have heartbeat now), we will get an OutOfOrderScannerNextException when // resending the next request and the only way to fix this is to close the scanner and open a // new one.
The branch-2 HTable implementation still uses the old behavior – the next() call passes the read rpc timeout as the rpc timeout, and uses the scanner timeout period as the operation timeout. This can lead to the above behavior.
It would be nice to provide users a migration path to AsyncTable's behavior, in the form of a config flag which causes HTable to use "hbase.client.scanner.timeout.period" as rpc timeout for next() calls like AsyncTable does.
Attachments
Issue Links
- links to