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

Manukranth Kolloju updated HBASE-12075:
---------------------------------------
    Attachment: 0001-Implement-Preemptive-Fast-Fail.patch

Brief overview of the patch:

commit 1c9e49cc94e2e60187ae2cabc3cfb5711cb6121a
Author: manukranthk <[email protected]>
Date:   Tue Sep 23 19:15:09 2014 -0700

    Implement Preemptive Fast Fail

hbase-client/src/main/java/org/apache/hadoop/hbase/client/AbstractRetryingCallerInterceptorContext.java
 >> The context which includes failure information that is per request
hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClusterConnection.java
hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionAdapter.java
hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java
hbase-client/src/main/java/org/apache/hadoop/hbase/client/FailureInfo.java >> 
FailureInfo object
hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTable.java
hbase-client/src/main/java/org/apache/hadoop/hbase/client/NoOpRetryableCallerInterceptor.java
 >> NoOp interceptor context which doesn't react with RpcRetryingCaller when 
turned off. This will be the default config.
hbase-client/src/main/java/org/apache/hadoop/hbase/client/NoOpRetryingInterceptorContext.java
 >> NoOp interceptor which does nothing. This will be the default config.
hbase-client/src/main/java/org/apache/hadoop/hbase/client/PreemptiveFastFailInterceptor.java
 >> The actual Interceptor implementation. This class contains the critical 
juice, rest is just fiber to hold this thing up.
hbase-client/src/main/java/org/apache/hadoop/hbase/client/RetryableCallerInterceptorFactory.java
 >> The factory which produces the interceptor
hbase-client/src/main/java/org/apache/hadoop/hbase/client/RetryingCallerInterceptor.java
 >> The abstract interceptor implementation which need to be extended by 
concrete implementations like PFFEInterceptor
hbase-client/src/main/java/org/apache/hadoop/hbase/client/RetryingCallerInterceptorContext.java
hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java
hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCallerFactory.java
hbase-client/src/main/java/org/apache/hadoop/hbase/exceptions/ConnectionClosingException.java
 >> Additional exception that RpcClient needs to throw to mark that the client 
has detected a server shutdown.
hbase-client/src/main/java/org/apache/hadoop/hbase/exceptions/PreemptiveFastFailException.java
 
hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java
hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java
hbase-common/src/main/java/org/apache/hadoop/hbase/util/ExceptionUtil.java
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFastFail.java >> 
Related end to end unit test that simulates a regionserver death and subsequent 
fast failing behavior.

> Preemptive Fast Fail
> --------------------
>
>                 Key: HBASE-12075
>                 URL: https://issues.apache.org/jira/browse/HBASE-12075
>             Project: HBase
>          Issue Type: Sub-task
>          Components: Client
>    Affects Versions: 1.0.0
>            Reporter: Manukranth Kolloju
>            Assignee: Manukranth Kolloju
>             Fix For: 1.0.0
>
>         Attachments: 0001-Add-a-test-case-for-Preemptive-Fast-Fail.patch, 
> 0001-Implement-Preemptive-Fast-Fail.patch
>
>
> In multi threaded clients, we use a feature developed on 0.89-fb branch 
> called Preemptive Fast Fail. This allows the client threads which would 
> potentially fail, fail fast. The idea behind this feature is that we allow, 
> among the hundreds of client threads, one thread to try and establish 
> connection with the regionserver and if that succeeds, we mark it as a live 
> node again. Meanwhile, other threads which are trying to establish connection 
> to the same server would ideally go into the timeouts which is effectively 
> unfruitful. We can in those cases return appropriate exceptions to those 
> clients instead of letting them retry.



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

Reply via email to