hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ted Yu (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-8285) HBaseClient never recovers for single HTable.get() calls with no retries when regions move
Date Fri, 12 Apr 2013 00:05:16 GMT

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

Ted Yu commented on HBASE-8285:
-------------------------------

Minor comment for patch v5:
{code}
+          // if there's something in the cache for this table.
+          tableLocations.remove(location.getRegionInfo().getStartKey());
{code}
'for this table' -> 'for this region'

Can you add a check for the (previous) value returned from remove() and only log the DEBUG
message if the value is not null ?
                
> HBaseClient never recovers for single HTable.get() calls with no retries when regions
move
> ------------------------------------------------------------------------------------------
>
>                 Key: HBASE-8285
>                 URL: https://issues.apache.org/jira/browse/HBASE-8285
>             Project: HBase
>          Issue Type: Bug
>          Components: Client
>    Affects Versions: 0.94.6.1
>            Reporter: Varun Sharma
>            Assignee: Varun Sharma
>            Priority: Critical
>             Fix For: 0.98.0, 0.94.7, 0.95.1
>
>         Attachments: 8285-0.94.txt, 8285-0.94-v2.txt, 8285-0.94-v3.txt, 8285-0.94-v4.txt,
8285-0.94-v5.txt, 8285-trunk.txt, 8285-trunk-v2.txt
>
>
> Steps to reproduce this bug:
> 1) Gracefull restart a region server causing regions to get redistributed.
> 2) Client call to this region keeps failing since Meta Cache is never purged on the client
for the region that moved.
> Reason behind the bug:
> 1) Client continues to hit the old region server.
> 2) The old region server throws NotServingRegionException which is not handled correctly
and the META cache entries are never purged for that server causing the client to keep hitting
the old server.
> The reason lies in ServerCallable code since we only purge META cache entries when there
is a RetriesExhaustedException, SocketTimeoutException or ConnectException. However, there
is no case check for NotServingRegionException(s).
> Why is this not a problem for Scan(s) and Put(s) ?
> a) If a region server is not hosting a region/scanner, then an UnknownScannerException
is thrown which causes a relocateRegion() call causing a refresh of the META cache for that
particular region.
> b) For put(s), the processBatchCallback() interface in HConnectionManager is used which
clears out META cache entries for all kinds of exceptions except DoNotRetryException.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message