From 218ed0a96b5b9a3130a6dbc6feeccd335126b242 Mon Sep 17 00:00:00 2001 From: Brahma Reddy Battula Date: Wed, 28 Dec 2016 10:34:33 +0530 Subject: [PATCH] HDFS-11252. TestFileTruncate#testTruncateWithDataNodesRestartImmediately can fail with BindException. Contributed by Yiqun Lin. (cherry picked from commit 0ddb8defad6a7fd5eb69847d1789ba51952c0cf0) --- .../server/namenode/TestFileTruncate.java | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFileTruncate.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFileTruncate.java index c34b4de846d..b9601f717a2 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFileTruncate.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFileTruncate.java @@ -680,13 +680,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(); @@ -739,13 +733,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(); @@ -799,8 +787,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); @@ -1240,4 +1228,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(); + } + } }