hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Abhishek Singh Chouhan (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-18796) Admin#isTableAvailable returns incorrect result before daughter regions are opened
Date Fri, 22 Sep 2017 14:44:00 GMT

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

Mime
View raw message