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