[ 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)