From 99faae207664a1db7a940a30eccf49d239392eb4 Mon Sep 17 00:00:00 2001 From: Aaron Myers Date: Tue, 4 Jun 2013 23:18:58 +0000 Subject: [PATCH] HDFS-4815. TestRBWBlockInvalidation: Double call countReplicas() to fetch corruptReplicas and liveReplicas is not needed. Contributed by Tian Hong Wang. git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1489670 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../TestRBWBlockInvalidation.java | 24 +++++++++---------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 3ef15815149..e05e235811c 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -342,6 +342,9 @@ Release 2.1.0-beta - UNRELEASED HDFS-4840. ReplicationMonitor gets NPE during shutdown. (kihwal) + HDFS-4815. TestRBWBlockInvalidation: Double call countReplicas() to fetch + corruptReplicas and liveReplicas is not needed. (Tian Hong Wang via atm) + BREAKDOWN OF HDFS-347 SUBTASKS AND RELATED JIRAS HDFS-4353. Encapsulate connections to peers in Peer and PeerServer classes. diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestRBWBlockInvalidation.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestRBWBlockInvalidation.java index ae4194a15ae..84c5feeb485 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestRBWBlockInvalidation.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestRBWBlockInvalidation.java @@ -70,7 +70,7 @@ public class TestRBWBlockInvalidation { throws IOException, InterruptedException { Configuration conf = new HdfsConfiguration(); conf.setInt(DFSConfigKeys.DFS_REPLICATION_KEY, 2); - conf.setLong(DFSConfigKeys.DFS_BLOCKREPORT_INTERVAL_MSEC_KEY, 300); + conf.setLong(DFSConfigKeys.DFS_BLOCKREPORT_INTERVAL_MSEC_KEY, 100); conf.setLong(DFSConfigKeys.DFS_DATANODE_DIRECTORYSCAN_INTERVAL_KEY, 1); conf.setLong(DFSConfigKeys.DFS_HEARTBEAT_INTERVAL_KEY, 1); MiniDFSCluster cluster = new MiniDFSCluster.Builder(conf).numDataNodes(2) @@ -101,27 +101,27 @@ public class TestRBWBlockInvalidation { out.close(); // Check datanode has reported the corrupt block. - boolean isCorruptReported = false; - while (!isCorruptReported) { - if (countReplicas(namesystem, blk).corruptReplicas() > 0) { - isCorruptReported = true; + int corruptReplicas = 0; + while (true) { + if ((corruptReplicas = countReplicas(namesystem, blk).corruptReplicas()) > 0) { + break; } Thread.sleep(100); } assertEquals("There should be 1 replica in the corruptReplicasMap", 1, - countReplicas(namesystem, blk).corruptReplicas()); + corruptReplicas); // Check the block has got replicated to another datanode. blk = DFSTestUtil.getFirstBlock(fs, testPath); - boolean isReplicated = false; - while (!isReplicated) { - if (countReplicas(namesystem, blk).liveReplicas() > 1) { - isReplicated = true; + int liveReplicas = 0; + while (true) { + if ((liveReplicas = countReplicas(namesystem, blk).liveReplicas()) > 1) { + break; } Thread.sleep(100); } - assertEquals("There should be two live replicas", 2, countReplicas( - namesystem, blk).liveReplicas()); + assertEquals("There should be two live replicas", 2, + liveReplicas); // sleep for 1 second, so that by this time datanode reports the corrupt // block after a live replica of block got replicated.