[ 
https://issues.apache.org/jira/browse/HBASE-21943?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16776510#comment-16776510
 ] 

Duo Zhang commented on HBASE-21943:
-----------------------------------

OK, I think the problem here is that, the region has been split, and then 
recreate with the another split keys.

And when we hit not serving region exception, we removed one of the split 
region from cache, and then try to fetch the new location, but then we find out 
that the remaining split region has a greater sequence number so we give up and 
return.

The problem here is that, here we expect that, the winner should also be 
fetched by another thread at the same time, so it will help completing the 
pending requests. But obviously, for the case above, the winner has already 
been there, so we will enter an infinite loop. That is, we try to locate, and 
then find out the old one is the winner, and give up, and then still try to 
locate the same row, and get the same result, and then...

> The usage of RegionLocations.mergeRegionLocations is wrong for async client
> ---------------------------------------------------------------------------
>
>                 Key: HBASE-21943
>                 URL: https://issues.apache.org/jira/browse/HBASE-21943
>             Project: HBase
>          Issue Type: Bug
>          Components: asyncclient, Client
>            Reporter: Duo Zhang
>            Assignee: Duo Zhang
>            Priority: Critical
>             Fix For: 3.0.0, 2.2.0, 2.0.5, 2.3.0, 2.1.4
>
>         Attachments: HBASE-21943-UT-v1.patch, HBASE-21943-UT.patch, 
> HBASE-21943-UT.patch, HBASE-21943-v1.patch, HBASE-21943.patch
>
>
> In AsyncRegionLocatorHelper.mergeRegionLocations we create a new 
> RegionLocations and call mergeRegionLocations on it, expected that it will be 
> changed by this method, but actually the method will not modify the object 
> itself, it will return a new one...
> And we are lucky that we create the RegionLocations with the new locations, 
> so usually we will get update result. But when testing HBASE-21717, we meet 
> another bug in AsyncNonMetaRegionLocator.isEqual, where we missed a '!' when 
> checking server name equals...



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to