From 45a47198b43a96817679d5bf9e570d405555e3eb Mon Sep 17 00:00:00 2001 From: Sean Mackrory Date: Thu, 4 Jan 2018 08:22:01 -0700 Subject: [PATCH] HDFS-12913. TestDNFencingWithReplication sometimes fails because of NameNode in standby state. Contributed by Zsolt Venczel. --- .../namenode/ha/TestDNFencingWithReplication.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDNFencingWithReplication.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDNFencingWithReplication.java index c91d4de31a..ee00da419c 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDNFencingWithReplication.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestDNFencingWithReplication.java @@ -60,11 +60,14 @@ public class TestDNFencingWithReplication { private static class ReplicationToggler extends RepeatingTestThread { private final FileSystem fs; private final Path path; + private final MiniDFSCluster cluster; - public ReplicationToggler(TestContext ctx, FileSystem fs, Path p) { + ReplicationToggler(TestContext ctx, FileSystem fs, Path p, + MiniDFSCluster cluster) { super(ctx); this.fs = fs; this.path = p; + this.cluster = cluster; } @Override @@ -81,6 +84,7 @@ private void waitForReplicas(final int replicas) throws Exception { @Override public Boolean get() { try { + cluster.waitActive(); BlockLocation[] blocks = fs.getFileBlockLocations(path, 0, 10); Assert.assertEquals(1, blocks.length); return blocks[0].getHosts().length == replicas; @@ -90,8 +94,8 @@ public Boolean get() { } }, 100, 60000); } catch (TimeoutException te) { - throw new IOException("Timed out waiting for " + replicas + " replicas " + - "on path " + path); + throw new IOException("Timed out waiting for " + replicas + + " replicas on path " + path); } } @@ -122,7 +126,7 @@ public void testFencingStress() throws Exception { for (int i = 0; i < NUM_THREADS; i++) { Path p = new Path("/test-" + i); DFSTestUtil.createFile(fs, p, BLOCK_SIZE*10, (short)3, (long)i); - togglers.addThread(new ReplicationToggler(togglers, fs, p)); + togglers.addThread(new ReplicationToggler(togglers, fs, p, cluster)); } // Start a separate thread which will make sure that replication