[
https://issues.apache.org/jira/browse/HBASE-18122?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16027174#comment-16027174
]
Phil Yang commented on HBASE-18122:
-----------------------------------
There are two scenes:
A client open a new scanner and its id generated by RS is 1(the first scanner),
if this RS crash and restart then another client open a new scanner, its id is
also 1. If the first client send a next() to this RS, it will get the wrong
results.
As described in HBASE-18121, the scanner callable will retry when there is an
exception that is not DoNotRetryIOE, but if the region moved to another RS, the
retry will not open a new scanner to the new RS, it will send next() with the
wrong scanner id.
> Scanner id should include ServerName of region server
> -----------------------------------------------------
>
> Key: HBASE-18122
> URL: https://issues.apache.org/jira/browse/HBASE-18122
> Project: HBase
> Issue Type: Bug
> Reporter: Phil Yang
> Assignee: Phil Yang
> Attachments: HBASE-18122.v01.patch, HBASE-18122.v02.patch
>
>
> Now the scanner id is a long number from 1 to max in a region server. Each
> new scanner will have a scanner id.
> If a client has a scanner whose id is x, when the RS restart and the scanner
> id is also incremented to x or a little larger, there will be a scanner id
> collision.
> So the scanner id should now be same during each time the RS restart. We can
> add the start timestamp as the highest several bits in scanner id uint64.
> And because HBASE-18121 is not easy to fix and there are many clients with
> old version. We can also encode server host:port into the scanner id.
> So we can use ServerName.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)