HBASE-9990 HTable uses the conf for each call creation

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1572522 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
nkeywal 2014-02-27 11:29:54 +00:00
parent 3600a9a973
commit 4bc7fe0d67
3 changed files with 15 additions and 10 deletions

View File

@ -29,7 +29,6 @@ import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.DoNotRetryIOException;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
@ -62,12 +61,9 @@ public class RpcRetryingCaller<T> {
private final long pause;
private final int retries;
public RpcRetryingCaller(Configuration conf) {
this.pause = conf.getLong(HConstants.HBASE_CLIENT_PAUSE,
HConstants.DEFAULT_HBASE_CLIENT_PAUSE);
this.retries =
conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,
HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);
public RpcRetryingCaller(long pause, int retries) {
this.pause = pause;
this.retries = retries;
}
private int getRemainingTime(int callTimeout) {

View File

@ -18,6 +18,7 @@
package org.apache.hadoop.hbase.client;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.util.ReflectionUtils;
/**
@ -28,13 +29,21 @@ public class RpcRetryingCallerFactory {
/** Configuration key for a custom {@link RpcRetryingCaller} */
public static final String CUSTOM_CALLER_CONF_KEY = "hbase.rpc.callerfactory.class";
protected final Configuration conf;
private final long pause;
private final int retries;
public RpcRetryingCallerFactory(Configuration conf) {
this.conf = conf;
pause = conf.getLong(HConstants.HBASE_CLIENT_PAUSE,
HConstants.DEFAULT_HBASE_CLIENT_PAUSE);
retries = conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,
HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);
}
public <T> RpcRetryingCaller<T> newCaller() {
return new RpcRetryingCaller<T>(conf);
// We store the values in the factory instance. This way, constructing new objects
// is cheap as it does not require parsing a complex structure.
return new RpcRetryingCaller<T>(pause, retries);
}
public static RpcRetryingCallerFactory instantiate(Configuration configuration) {
@ -44,4 +53,4 @@ public class RpcRetryingCallerFactory {
return ReflectionUtils.instantiateWithCustomCtor(rpcCallerFactoryClazz,
new Class[] { Configuration.class }, new Object[] { configuration });
}
}
}

View File

@ -147,7 +147,7 @@ public class TestAsyncProcess {
protected RpcRetryingCaller<MultiResponse> createCaller(MultiServerCallable<Row> callable) {
final MultiResponse mr = createMultiResponse(
callable.getMulti(), nbMultiResponse, nbActions);
return new RpcRetryingCaller<MultiResponse>(conf) {
return new RpcRetryingCaller<MultiResponse>(100, 10) {
@Override
public MultiResponse callWithoutRetries(RetryingCallable<MultiResponse> callable,
int callTimeout)