You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cd...@apache.org on 2017/03/21 00:20:55 UTC
[2/2] hadoop git commit: HDFS-6648. Order of namenodes in
ConfiguredFailoverProxyProvider is undefined. Contributed by Inigo Goiri
HDFS-6648. Order of namenodes in ConfiguredFailoverProxyProvider is undefined. Contributed by Inigo Goiri
(cherry picked from commit b104f3a282ab8e15314446e71189eb3a3b5dd9a6)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/69f34e81
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/69f34e81
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/69f34e81
Branch: refs/heads/branch-2
Commit: 69f34e812e11271859bd5aa707804f2d224348fe
Parents: 22930b0
Author: Chris Douglas <cd...@apache.org>
Authored: Mon Mar 20 17:15:13 2017 -0700
Committer: Chris Douglas <cd...@apache.org>
Committed: Mon Mar 20 17:16:15 2017 -0700
----------------------------------------------------------------------
.../java/org/apache/hadoop/hdfs/DFSUtilClient.java | 2 +-
.../hadoop/hdfs/client/HdfsClientConfigKeys.java | 2 ++
.../namenode/ha/ConfiguredFailoverProxyProvider.java | 15 ++++++++++++---
3 files changed, 15 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/69f34e81/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSUtilClient.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSUtilClient.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSUtilClient.java
index 16d539a..d089bdc 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSUtilClient.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSUtilClient.java
@@ -351,7 +351,7 @@ public class DFSUtilClient {
static Map<String, InetSocketAddress> getAddressesForNameserviceId(
Configuration conf, String nsId, String defaultValue, String... keys) {
Collection<String> nnIds = getNameNodeIds(conf, nsId);
- Map<String, InetSocketAddress> ret = Maps.newHashMap();
+ Map<String, InetSocketAddress> ret = Maps.newLinkedHashMap();
for (String nnId : emptyAsSingletonNull(nnIds)) {
String suffix = concatSuffixes(nsId, nnId);
String address = getConfValue(defaultValue, suffix, conf, keys);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/69f34e81/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/client/HdfsClientConfigKeys.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/client/HdfsClientConfigKeys.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/client/HdfsClientConfigKeys.java
index 65315e0..c189ad5 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/client/HdfsClientConfigKeys.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/client/HdfsClientConfigKeys.java
@@ -276,6 +276,8 @@ public interface HdfsClientConfigKeys {
String CONNECTION_RETRIES_ON_SOCKET_TIMEOUTS_KEY =
PREFIX + "connection.retries.on.timeouts";
int CONNECTION_RETRIES_ON_SOCKET_TIMEOUTS_DEFAULT = 0;
+ String RANDOM_ORDER = PREFIX + "random.order";
+ boolean RANDOM_ORDER_DEFAULT = false;
}
/** dfs.client.write configuration properties */
http://git-wip-us.apache.org/repos/asf/hadoop/blob/69f34e81/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/ConfiguredFailoverProxyProvider.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/ConfiguredFailoverProxyProvider.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/ConfiguredFailoverProxyProvider.java
index c2d4d91..0e8fa44 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/ConfiguredFailoverProxyProvider.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/ConfiguredFailoverProxyProvider.java
@@ -23,6 +23,7 @@ import java.net.InetSocketAddress;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -43,9 +44,10 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
/**
- * A FailoverProxyProvider implementation which allows one to configure two URIs
- * to connect to during fail-over. The first configured address is tried first,
- * and on a fail-over event the other address is tried.
+ * A FailoverProxyProvider implementation which allows one to configure
+ * multiple URIs to connect to during fail-over. A random configured address is
+ * tried first, and on a fail-over event the other addresses are tried
+ * sequentially in a random order.
*/
public class ConfiguredFailoverProxyProvider<T> extends
AbstractNNFailoverProxyProvider<T> {
@@ -124,6 +126,13 @@ public class ConfiguredFailoverProxyProvider<T> extends
for (InetSocketAddress address : addressesOfNns) {
proxies.add(new AddressRpcProxyPair<T>(address));
}
+ // Randomize the list to prevent all clients pointing to the same one
+ boolean randomized = conf.getBoolean(
+ HdfsClientConfigKeys.Failover.RANDOM_ORDER,
+ HdfsClientConfigKeys.Failover.RANDOM_ORDER_DEFAULT);
+ if (randomized) {
+ Collections.shuffle(proxies);
+ }
// The client may have a delegation token set for the logical
// URI of the cluster. Clone this token to apply to each of the
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org