[
https://issues.apache.org/jira/browse/HBASE-18121?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16025937#comment-16025937
]
Phil Yang edited comment on HBASE-18121 at 5/26/17 7:41 AM:
------------------------------------------------------------
It is not easy to fix because we use callWithRetries in ScannerCallable and
only when we get DoNotRetryIOException we have logic to reset scanner id and
start row to make sure we are continuing the scanning. When the next() call has
some retryable exception (mainly network exception), now we only retry in lower
level by reload the meta and find the new server. Even if we reset the scanner
id we still only have a Scan with wrong startRow.
So we can fix HBASE-18122 first. After that although the logic is still wrong,
we will get an UnknownScannerException and we can retry correctly and will not
read any wrong data. The only weakness is one time useless rpc request.
was (Author: yangzhe1991):
It is not easy to fix because we use callWithRetries in ScannerCallable and
only when we get DoNotRetryIOException we have logic to reset scanner id and
start row to make sure we are continuing the scanning. When the next() call has
some exception, now we only retry in lower level by reload the meta and find
the new server. Even if we reset the scanner id we still only have a Scan with
wrong startRow.
So we can fix HBASE-18122 first. After that although the logic is still wrong,
we will get an UnknownScannerException and we can retry correctly and will not
read any wrong data. The only weakness is one time useless rpc request.
> Scanner id should be reset when ScannerCallable reload the location
> -------------------------------------------------------------------
>
> Key: HBASE-18121
> URL: https://issues.apache.org/jira/browse/HBASE-18121
> Project: HBase
> Issue Type: Bug
> Reporter: Phil Yang
> Assignee: Phil Yang
>
> If a scan rpc request failed, the RetryingCallable will retry by reload=true
> and may change the location because there may be a RS crash. However, the
> ScannerCallable will still use the previous scanner id and send to the new
> server. In new RS the scanner id is not related with the old RS. The most
> possible result is UnknowScannerException and client will retry and there
> will be one useless rpc. And there is a low probability that there is a
> scanner with same id in the new RS, the result will be totally wrong.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)