Repository: hadoop
Updated Branches:
refs/heads/branch-2 2ca6251a6 -> 6e37c5fe8
HDFS-10261. TestBookKeeperHACheckpoints doesn't handle ephemeral HTTP ports.
Contributed by Eric Badger.
(cherry picked from commit 9ba1e5af06070ba01dcf46e1a4c66713a1d43352)
Conflicts:
hadoop-hdfs-project/hadoop-hdfs/src/contrib/bkjournal/src/test/java/org/apache/hadoop/contrib/bkjournal/TestBookKeeperHACheckpoints.java
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6e37c5fe
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6e37c5fe
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6e37c5fe
Branch: refs/heads/branch-2
Commit: 6e37c5fe80ee9ce46afc26838391cc27ca6b1e6f
Parents: 2ca6251
Author: Kihwal Lee <[email protected]>
Authored: Tue Apr 5 16:49:59 2016 -0500
Committer: Kihwal Lee <[email protected]>
Committed: Tue Apr 5 16:49:59 2016 -0500
----------------------------------------------------------------------
.../bkjournal/TestBookKeeperHACheckpoints.java | 47 ++++++++++++++------
1 file changed, 33 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6e37c5fe/hadoop-hdfs-project/hadoop-hdfs/src/contrib/bkjournal/src/test/java/org/apache/hadoop/contrib/bkjournal/TestBookKeeperHACheckpoints.java
----------------------------------------------------------------------
diff --git
a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/bkjournal/src/test/java/org/apache/hadoop/contrib/bkjournal/TestBookKeeperHACheckpoints.java
b/hadoop-hdfs-project/hadoop-hdfs/src/contrib/bkjournal/src/test/java/org/apache/hadoop/contrib/bkjournal/TestBookKeeperHACheckpoints.java
index b74cd7f..3299673 100644
---
a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/bkjournal/src/test/java/org/apache/hadoop/contrib/bkjournal/TestBookKeeperHACheckpoints.java
+++
b/hadoop-hdfs-project/hadoop-hdfs/src/contrib/bkjournal/src/test/java/org/apache/hadoop/contrib/bkjournal/TestBookKeeperHACheckpoints.java
@@ -17,6 +17,8 @@
*/
package org.apache.hadoop.contrib.bkjournal;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hdfs.DFSConfigKeys;
import org.apache.hadoop.hdfs.MiniDFSCluster;
@@ -27,6 +29,9 @@ import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
+import java.net.BindException;
+import java.util.Random;
+
/**
* Runs the same tests as TestStandbyCheckpoints, but
* using a bookkeeper journal manager as the shared directory
@@ -35,6 +40,9 @@ public class TestBookKeeperHACheckpoints extends
TestStandbyCheckpoints {
private static BKJMUtil bkutil = null;
static int numBookies = 3;
static int journalCount = 0;
+ private final Random random = new Random();
+
+ private static final Log LOG =
LogFactory.getLog(TestStandbyCheckpoints.class);
@SuppressWarnings("rawtypes")
@Override
@@ -45,23 +53,34 @@ public class TestBookKeeperHACheckpoints extends
TestStandbyCheckpoints {
BKJMUtil.createJournalURI("/checkpointing" + journalCount++)
.toString());
BKJMUtil.addJournalManagerDefinition(conf);
- MiniDFSNNTopology topology = new MiniDFSNNTopology()
- .addNameservice(new MiniDFSNNTopology.NSConf("ns1")
- .addNN(new MiniDFSNNTopology.NNConf("nn1").setHttpPort(10001))
- .addNN(new MiniDFSNNTopology.NNConf("nn2").setHttpPort(10002)));
- cluster = new MiniDFSCluster.Builder(conf)
- .nnTopology(topology)
- .numDataNodes(1)
- .manageNameDfsSharedDirs(false)
- .build();
- cluster.waitActive();
+ int retryCount = 0;
+ while (true) {
+ try {
+ int basePort = 10060 + random.nextInt(100) * 2;
+ MiniDFSNNTopology topology = new MiniDFSNNTopology()
+ .addNameservice(new MiniDFSNNTopology.NSConf("ns1")
+ .addNN(new MiniDFSNNTopology.NNConf("nn1").setHttpPort(basePort))
+ .addNN(new MiniDFSNNTopology.NNConf("nn2").setHttpPort(basePort +
1)));
- nn0 = cluster.getNameNode(0);
- nn1 = cluster.getNameNode(1);
- fs = HATestUtil.configureFailoverFs(cluster, conf);
+ cluster = new MiniDFSCluster.Builder(conf)
+ .nnTopology(topology)
+ .numDataNodes(1)
+ .manageNameDfsSharedDirs(false)
+ .build();
+ cluster.waitActive();
+ nn0 = cluster.getNameNode(0);
+ nn1 = cluster.getNameNode(1);
+ fs = HATestUtil.configureFailoverFs(cluster, conf);
- cluster.transitionToActive(0);
+ cluster.transitionToActive(0);
+ ++retryCount;
+ break;
+ } catch (BindException e) {
+ LOG.info("Set up MiniDFSCluster failed due to port conflicts, retry "
+ + retryCount + " times");
+ }
+ }
}
@BeforeClass