Uploaded image for project: 'Hadoop HDFS'
  1. Hadoop HDFS
  2. HDFS-4744

TestBlockRecovery should bind ephemeral ports redux

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 2.0.4-alpha, 3.0.0-alpha1
    • None
    • test
    • None

    Description

      Occasionally:

      java.net.BindException: Port in use: localhost:50070
      	at org.apache.hadoop.http.HttpServer.openListener(HttpServer.java:730)
      	at org.apache.hadoop.http.HttpServer.start(HttpServer.java:674)
      	at org.apache.hadoop.hdfs.server.namenode.NameNodeHttpServer.start(NameNodeHttpServer.java:157)
      	at org.apache.hadoop.hdfs.server.namenode.NameNode.startHttpServer(NameNode.java:552)
      	at org.apache.hadoop.hdfs.server.namenode.NameNode.startCommonServices(NameNode.java:485)
      	at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:448)
      	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:609)
      	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:594)
      	at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1169)
      	at org.apache.hadoop.hdfs.MiniDFSCluster.createNameNode(MiniDFSCluster.java:893)
      	at org.apache.hadoop.hdfs.MiniDFSCluster.createNameNodesAndSetConf(MiniDFSCluster.java:784)
      	at org.apache.hadoop.hdfs.MiniDFSCluster.initMiniDFSCluster(MiniDFSCluster.java:642)
      	at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:334)
      	at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:115)
      	at org.apache.hadoop.hdfs.MiniDFSCluster$Builder.build(MiniDFSCluster.java:316)
      	at org.apache.hadoop.hdfs.server.datanode.TestBlockRecovery.testRaceBetweenReplicaRecoveryAndFinalizeBlock(TestBlockRecovery.java:581)
      

      This fixes the problem, tested with nc processes bound to 8020 and 50070:

      diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/Te
      index a400e85..a990a54 100644
      --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBlock
      +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBlock
      @@ -579,7 +579,6 @@ public void testRaceBetweenReplicaRecoveryAndFinalizeBlock() throws Exception {
       
           Configuration conf = new HdfsConfiguration();
           MiniDFSCluster cluster = new MiniDFSCluster.Builder(conf)
      -        .nnTopology(MiniDFSNNTopology.simpleSingleNN(8020, 50070))
               .numDataNodes(1).build();
           try {
             cluster.waitClusterUp();
      

      Also, this is a problem:

        private final static InetSocketAddress NN_ADDR = new InetSocketAddress(
            "localhost", 5020);
      

      Two instances of this test can't run simultaneously on the same host and may not work at all if port 5020 is bound by something else.

      Attachments

        Activity

          People

            Unassigned Unassigned
            apurtell Andrew Kyle Purtell
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated: