HDFS-11252. TestFileTruncate#testTruncateWithDataNodesRestartImmediately can fail with BindException. Contributed by Yiqun Lin.

This commit is contained in:
Brahma Reddy Battula 2016-12-28 10:34:33 +05:30
parent 9262797e86
commit 0ddb8defad

View File

@ -681,13 +681,7 @@ public void testTruncateWithDataNodesRestart() throws Exception {
int toTruncateLength = 1;
int newLength = startingFileSize - toTruncateLength;
cluster.getDataNodes().get(dn).shutdown();
try {
boolean isReady = fs.truncate(p, newLength);
assertFalse(isReady);
} finally {
cluster.restartDataNode(dn, true, true);
cluster.waitActive();
}
truncateAndRestartDN(p, dn, newLength);
checkBlockRecovery(p);
LocatedBlock newBlock = getLocatedBlocks(p).getLastLocatedBlock();
@ -740,13 +734,7 @@ public void testCopyOnTruncateWithDataNodesRestart() throws Exception {
int toTruncateLength = 1;
int newLength = startingFileSize - toTruncateLength;
cluster.getDataNodes().get(dn).shutdown();
try {
boolean isReady = fs.truncate(p, newLength);
assertFalse(isReady);
} finally {
cluster.restartDataNode(dn, true, true);
cluster.waitActive();
}
truncateAndRestartDN(p, dn, newLength);
checkBlockRecovery(p);
LocatedBlock newBlock = getLocatedBlocks(p).getLastLocatedBlock();
@ -800,8 +788,8 @@ public void testTruncateWithDataNodesRestartImmediately() throws Exception {
boolean isReady = fs.truncate(p, newLength);
assertFalse(isReady);
cluster.restartDataNode(dn0, true, true);
cluster.restartDataNode(dn1, true, true);
cluster.restartDataNode(dn0, false, true);
cluster.restartDataNode(dn1, false, true);
cluster.waitActive();
checkBlockRecovery(p);
@ -1242,4 +1230,15 @@ static void restartCluster(StartupOption o)
.build();
fs = cluster.getFileSystem();
}
private void truncateAndRestartDN(Path p, int dn, int newLength)
throws IOException {
try {
boolean isReady = fs.truncate(p, newLength);
assertFalse(isReady);
} finally {
cluster.restartDataNode(dn, false, true);
cluster.waitActive();
}
}
}