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

Abhishek Singh Chouhan commented on HBASE-18796:
------------------------------------------------

Debugged this further. The issue was infact related to this part :)
{code}
if (scan.getLimit() == 0 || scanExhausted(values)) {
        closeScanner();
        closed = true;
        break;
      }
{code}
We're hitting scan.getLimit() == 0 which results in closing the scanner and 
returning null. The problem being in 
ConnectionImplementation#locateRegionInMeta we create the scan object outside 
the retry loop and set s.setOneRowLimit() now during the first attempt we get 
the row but with empty server location so we retry, however the limit has 
already become 0 now because the scan returned a row during the first attempt, 
now during the first attempt we incorrectly close the scan, hence getting the 
TableNotFoundException. Let me put up an addendum that does this. Apologies for 
the to and fro, took me some time to get to the bottom of this(hopefully :)).

> Admin#isTableAvailable returns incorrect result before daughter regions are 
> opened
> ----------------------------------------------------------------------------------
>
>                 Key: HBASE-18796
>                 URL: https://issues.apache.org/jira/browse/HBASE-18796
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 1.3.1
>            Reporter: Abhishek Singh Chouhan
>            Assignee: Abhishek Singh Chouhan
>             Fix For: 2.0.0, 3.0.0, 1.4.0, 1.3.2, 1.5.0
>
>         Attachments: HBASE-18796-addendum.branch-1.patch, 
> HBASE-18796-addendum.master.patch, HBASE-18796.branch-1.001.patch, 
> HBASE-18796.branch-1.001.patch, HBASE-18796.branch-1.002.patch, 
> HBASE-18796.branch-1.003.patch, HBASE-18796.master.001.patch
>
>
> Admin#isTableAvailable checks if it can getServerName for the meta entries it 
> reads. During the time of split server location are added to the meta entries 
> in MetaTableAccessor#splitRegion although the description of the method says 
> "Does not add the location information to the daughter regions since they are 
> not open yet.". At this point during the split daughter regions are not 
> actually open, so we can get to a state where parent is offline, daughters 
> are not yet open but isTableAvailable returns true.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to