You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Marcin Januszkiewicz (JIRA)" <ji...@apache.org> on 2017/01/27 14:35:24 UTC

[jira] [Updated] (HBASE-17556) The client will not invalidate stale region caches

     [ https://issues.apache.org/jira/browse/HBASE-17556?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Marcin Januszkiewicz updated HBASE-17556:
-----------------------------------------
    External issue URL:   (was: https://issues.apache.org/jira/browse/HBASE-12534)
           Description: 
We noticed in our application, that sometimes when we interact with a table an operation will fail with an exception, an all operations that happen on the same region will also fail until the application is restarted.

It seems that when a merge or split happens on a region that is already in the clients cache, and the client is configured to retry operations, then there is no way for the client to detect this. In RpcRetryingCaller#callWithRetries if a call fails with RegionNotServingException then the cache will be cleared only if the retry parameter is equal to 1. This means the call will fail but the following calls will succeed.

RpcRetryingCaller#callWithoutRetries contains the comment "It would be nice to clear the location cache here". Additionally, the stale cache will cause this call to fail, even though the data is available.

See also HBASE-12534

  was:
We noticed in our application, that sometimes when we interact with a table an operation will fail with an exception, an all operations that happen on the same region will also fail until the application is restarted.

It seems that when a merge or split happens on a region that is already in the clients cache, and the client is configured to retry operations, then there is no way for the client to detect this. In RpcRetryingCaller#callWithRetries if a call fails with RegionNotServingException then the cache will be cleared only if the retry parameter is equal to 1. This means the call will fail but the following calls will succeed.

RpcRetryingCaller#callWithoutRetries contains the comment "It would be nice to clear the location cache here". Additionally, the stale cache will cause this call to fail, even though the data is available.




> The client will not invalidate stale region caches
> --------------------------------------------------
>
>                 Key: HBASE-17556
>                 URL: https://issues.apache.org/jira/browse/HBASE-17556
>             Project: HBase
>          Issue Type: Bug
>          Components: Client
>    Affects Versions: 1.0.0, 2.0.0, 0.98.24
>            Reporter: Marcin Januszkiewicz
>            Priority: Critical
>
> We noticed in our application, that sometimes when we interact with a table an operation will fail with an exception, an all operations that happen on the same region will also fail until the application is restarted.
> It seems that when a merge or split happens on a region that is already in the clients cache, and the client is configured to retry operations, then there is no way for the client to detect this. In RpcRetryingCaller#callWithRetries if a call fails with RegionNotServingException then the cache will be cleared only if the retry parameter is equal to 1. This means the call will fail but the following calls will succeed.
> RpcRetryingCaller#callWithoutRetries contains the comment "It would be nice to clear the location cache here". Additionally, the stale cache will cause this call to fail, even though the data is available.
> See also HBASE-12534



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)