HDFS-10367. TestDFSShell.testMoveWithTargetPortEmpty fails with Address bind exception. Contributed by Brahma Reddy Battula.
(cherry picked from commit aadb77e412
)
Conflicts:
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSShell.java
This commit is contained in:
parent
6843e55208
commit
3740974413
|
@ -63,4 +63,43 @@ public class ServerSocketUtil {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether port is available or not.
|
||||||
|
*
|
||||||
|
* @param port given port
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private static boolean isPortAvailable(int port) {
|
||||||
|
try (ServerSocket s = new ServerSocket(port)) {
|
||||||
|
return true;
|
||||||
|
} catch (IOException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wait till the port available.
|
||||||
|
*
|
||||||
|
* @param port given port
|
||||||
|
* @param retries number of retries for given port
|
||||||
|
* @return
|
||||||
|
* @throws InterruptedException
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public static int waitForPort(int port, int retries)
|
||||||
|
throws InterruptedException, IOException {
|
||||||
|
int tries = 0;
|
||||||
|
while (true) {
|
||||||
|
if (isPortAvailable(port)) {
|
||||||
|
return port;
|
||||||
|
} else {
|
||||||
|
tries++;
|
||||||
|
if (tries >= retries) {
|
||||||
|
throw new IOException(
|
||||||
|
"Port is already in use; giving up after " + tries + " times.");
|
||||||
|
}
|
||||||
|
Thread.sleep(1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,7 @@ import org.apache.hadoop.io.SequenceFile;
|
||||||
import org.apache.hadoop.io.Text;
|
import org.apache.hadoop.io.Text;
|
||||||
import org.apache.hadoop.io.compress.BZip2Codec;
|
import org.apache.hadoop.io.compress.BZip2Codec;
|
||||||
import org.apache.hadoop.io.compress.CompressionCodec;
|
import org.apache.hadoop.io.compress.CompressionCodec;
|
||||||
|
import org.apache.hadoop.net.ServerSocketUtil;
|
||||||
import org.apache.hadoop.security.UserGroupInformation;
|
import org.apache.hadoop.security.UserGroupInformation;
|
||||||
import org.apache.hadoop.test.PathUtils;
|
import org.apache.hadoop.test.PathUtils;
|
||||||
import org.apache.hadoop.util.ReflectionUtils;
|
import org.apache.hadoop.util.ReflectionUtils;
|
||||||
|
@ -530,7 +531,8 @@ public class TestDFSShell {
|
||||||
cluster = new MiniDFSCluster.Builder(conf)
|
cluster = new MiniDFSCluster.Builder(conf)
|
||||||
.format(true)
|
.format(true)
|
||||||
.numDataNodes(2)
|
.numDataNodes(2)
|
||||||
.nameNodePort(8020)
|
.nameNodePort(ServerSocketUtil.waitForPort(
|
||||||
|
HdfsClientConfigKeys.DFS_NAMENODE_RPC_PORT_DEFAULT, 10))
|
||||||
.waitSafeMode(true)
|
.waitSafeMode(true)
|
||||||
.build();
|
.build();
|
||||||
FileSystem srcFs = cluster.getFileSystem();
|
FileSystem srcFs = cluster.getFileSystem();
|
||||||
|
|
Loading…
Reference in New Issue