1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.client;
19
20 import org.apache.hadoop.conf.Configuration;
21 import org.apache.hadoop.hbase.HConstants;
22 import org.apache.hadoop.hbase.util.ReflectionUtils;
23
24
25
26
27 public class RpcRetryingCallerFactory {
28
29
30 public static final String CUSTOM_CALLER_CONF_KEY = "hbase.rpc.callerfactory.class";
31 protected final Configuration conf;
32 private final long pause;
33 private final int retries;
34
35 public RpcRetryingCallerFactory(Configuration conf) {
36 this.conf = conf;
37 pause = conf.getLong(HConstants.HBASE_CLIENT_PAUSE,
38 HConstants.DEFAULT_HBASE_CLIENT_PAUSE);
39 retries = conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,
40 HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);
41 }
42
43 public <T> RpcRetryingCaller<T> newCaller() {
44
45
46 return new RpcRetryingCaller<T>(pause, retries);
47 }
48
49 public static RpcRetryingCallerFactory instantiate(Configuration configuration) {
50 String rpcCallerFactoryClazz =
51 configuration.get(RpcRetryingCallerFactory.CUSTOM_CALLER_CONF_KEY,
52 RpcRetryingCallerFactory.class.getName());
53 return ReflectionUtils.instantiateWithCustomCtor(rpcCallerFactoryClazz,
54 new Class[] { Configuration.class }, new Object[] { configuration });
55 }
56 }