Apache9 commented on a change in pull request #1593:
URL: https://github.com/apache/hbase/pull/1593#discussion_r419799798



##########
File path: 
hbase-client/src/main/java/org/apache/hadoop/hbase/client/MasterRegistry.java
##########
@@ -61,53 +65,79 @@
 /**
  * Master based registry implementation. Makes RPCs to the configured master 
addresses from config
  * {@value org.apache.hadoop.hbase.HConstants#MASTER_ADDRS_KEY}.
- *
+ * <p/>
  * It supports hedged reads, which can be enabled by setting
  * {@value 
org.apache.hadoop.hbase.HConstants#MASTER_REGISTRY_ENABLE_HEDGED_READS_KEY} to 
True. Fan
  * out the requests batch is controlled by
  * {@value 
org.apache.hadoop.hbase.HConstants#HBASE_RPCS_HEDGED_REQS_FANOUT_KEY}.
- *
+ * <p/>
  * TODO: Handle changes to the configuration dynamically without having to 
restart the client.
  */
 @InterfaceAudience.Private
 public class MasterRegistry implements ConnectionRegistry {
+
+  /** Configuration key that controls the fan out of requests **/
+  public static final String MASTER_REGISTRY_HEDGED_REQS_FANOUT_KEY =
+    "hbase.client.master_registry.hedged.fanout";
+
+  /** Default value for the fan out of hedged requests. **/
+  public static final int MASTER_REGISTRY_HEDGED_REQS_FANOUT_DEFAULT = 2;
+
   private static final String MASTER_ADDRS_CONF_SEPARATOR = ",";
 
+  private final int hedgedReadFanOut;
+
   // Configured list of masters to probe the meta information from.
-  private final Set<ServerName> masterServers;
+  private final Set<ServerName> masterAddrs;
+
+  private final List<ClientMetaService.Interface> masterStubs;
 
   // RPC client used to talk to the masters.
   private final RpcClient rpcClient;
   private final RpcControllerFactory rpcControllerFactory;
-  private final int rpcTimeoutMs;
-
-  MasterRegistry(Configuration conf) throws UnknownHostException {
-    boolean hedgedReadsEnabled = 
conf.getBoolean(MASTER_REGISTRY_ENABLE_HEDGED_READS_KEY,
-        MASTER_REGISTRY_ENABLE_HEDGED_READS_DEFAULT);
-    Configuration finalConf;
-    if (!hedgedReadsEnabled) {
-      // If hedged reads are disabled, it is equivalent to setting a fan out 
of 1. We make a copy of
-      // the configuration so that other places reusing this reference is not 
affected.
-      finalConf = new Configuration(conf);
-      finalConf.setInt(HConstants.HBASE_RPCS_HEDGED_REQS_FANOUT_KEY, 1);
-    } else {
-      finalConf = conf;
+
+  /**
+   * Parses the list of master addresses from the provided configuration. 
Supported format is comma
+   * separated host[:port] values. If no port number if specified, default 
master port is assumed.
+   * @param conf Configuration to parse from.
+   */
+  private static Set<ServerName> parseMasterAddrs(Configuration conf) throws 
UnknownHostException {
+    Set<ServerName> masterAddrs = new HashSet<>();
+    String configuredMasters = getMasterAddr(conf);
+    for (String masterAddr : 
configuredMasters.split(MASTER_ADDRS_CONF_SEPARATOR)) {
+      HostAndPort masterHostPort =
+        
HostAndPort.fromString(masterAddr.trim()).withDefaultPort(HConstants.DEFAULT_MASTER_PORT);
+      masterAddrs.add(ServerName.valueOf(masterHostPort.toString(), 
ServerName.NON_STARTCODE));
     }
-    if (conf.get(MASTER_ADDRS_KEY) != null) {
-      finalConf.set(MASTER_ADDRS_KEY, conf.get(MASTER_ADDRS_KEY));
+    Preconditions.checkArgument(!masterAddrs.isEmpty(), "At least one master 
address is needed");
+    return masterAddrs;
+  }
+
+  MasterRegistry(Configuration conf) throws IOException {
+    this.hedgedReadFanOut = conf.getInt(MASTER_REGISTRY_HEDGED_REQS_FANOUT_KEY,
+      MASTER_REGISTRY_HEDGED_REQS_FANOUT_DEFAULT);
+    int rpcTimeoutMs = (int) Math.min(Integer.MAX_VALUE,
+      conf.getLong(HConstants.HBASE_RPC_TIMEOUT_KEY, 
HConstants.DEFAULT_HBASE_RPC_TIMEOUT));
+    // XXX: we pass cluster id as null here since we do not have a cluster id 
yet, we have to fetch

Review comment:
       Just because we do not have a test where MasterRegistry is enabled and 
we use cluster id to select authentication. Most tests in HBase do not need 
authentication.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to