HDFS-12913. TestDNFencingWithReplication sometimes fails because of NameNode in standby state. Contributed by Zsolt Venczel.
This commit is contained in:
parent
2a48b3594c
commit
45a47198b4
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user