HDFS-9354. Fix TestBalancer#testBalancerWithZeroThreadsForMove on Windows. Contributed by Xiaoyu Yao.

(cherry picked from commit 095ac83402)

Conflicts:
	hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/balancer/TestBalancer.java
This commit is contained in:
cnauroth 2015-11-03 10:51:21 -08:00
parent 3190446df9
commit 9d11d2a8f2
2 changed files with 264 additions and 286 deletions

View File

@ -1376,6 +1376,9 @@ Release 2.8.0 - UNRELEASED
HDFS-9313. Possible NullPointerException in BlockManager if no excess HDFS-9313. Possible NullPointerException in BlockManager if no excess
replica can be chosen. (mingma) replica can be chosen. (mingma)
HDFS-9354. Fix TestBalancer#testBalancerWithZeroThreadsForMove on Windows.
(Xiaoyu Yao via cnauroth)
Release 2.7.2 - UNRELEASED Release 2.7.2 - UNRELEASED
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -84,6 +84,7 @@ import org.apache.hadoop.test.GenericTestUtils;
import org.apache.hadoop.util.Time; import org.apache.hadoop.util.Time;
import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.Tool;
import org.apache.log4j.Level; import org.apache.log4j.Level;
import org.junit.After;
import org.junit.Test; import org.junit.Test;
/** /**
@ -104,6 +105,14 @@ public class TestBalancer {
final static Path filePath = new Path(fileName); final static Path filePath = new Path(fileName);
private MiniDFSCluster cluster; private MiniDFSCluster cluster;
@After
public void shutdown() throws Exception {
if (cluster != null) {
cluster.shutdown();
cluster = null;
}
}
ClientProtocol client; ClientProtocol client;
static final long TIMEOUT = 40000L; //msec static final long TIMEOUT = 40000L; //msec
@ -348,7 +357,6 @@ public class TestBalancer {
cluster = new MiniDFSCluster.Builder(conf).numDataNodes(capacities.length) cluster = new MiniDFSCluster.Builder(conf).numDataNodes(capacities.length)
.hosts(hosts).racks(racks).simulatedCapacities(capacities).build(); .hosts(hosts).racks(racks).simulatedCapacities(capacities).build();
try {
cluster.waitActive(); cluster.waitActive();
client = NameNodeProxies.createProxy(conf, client = NameNodeProxies.createProxy(conf,
cluster.getFileSystem(0).getUri(), ClientProtocol.class).getProxy(); cluster.getFileSystem(0).getUri(), ClientProtocol.class).getProxy();
@ -381,11 +389,6 @@ public class TestBalancer {
Collection<URI> namenodes = DFSUtil.getNsServiceRpcUris(conf); Collection<URI> namenodes = DFSUtil.getNsServiceRpcUris(conf);
int r = Balancer.run(namenodes, BalancerParameters.DEFAULT, conf); int r = Balancer.run(namenodes, BalancerParameters.DEFAULT, conf);
assertEquals(ExitStatus.NO_MOVE_PROGRESS.getExitCode(), r); assertEquals(ExitStatus.NO_MOVE_PROGRESS.getExitCode(), r);
} finally {
cluster.shutdown();
}
} }
/** /**
@ -865,7 +868,6 @@ public class TestBalancer {
.racks(racks) .racks(racks)
.simulatedCapacities(capacities) .simulatedCapacities(capacities)
.build(); .build();
try {
cluster.waitActive(); cluster.waitActive();
client = NameNodeProxies.createProxy(conf, cluster.getFileSystem(0).getUri(), client = NameNodeProxies.createProxy(conf, cluster.getFileSystem(0).getUri(),
ClientProtocol.class).getProxy(); ClientProtocol.class).getProxy();
@ -887,9 +889,6 @@ public class TestBalancer {
pBuilder.setRunDuringUpgrade(false); pBuilder.setRunDuringUpgrade(false);
final int r = Balancer.run(namenodes, pBuilder.build(), conf); final int r = Balancer.run(namenodes, pBuilder.build(), conf);
assertEquals(ExitStatus.SUCCESS.getExitCode(), r); assertEquals(ExitStatus.SUCCESS.getExitCode(), r);
} finally {
cluster.shutdown();
}
} }
/** /**
@ -1322,7 +1321,6 @@ public class TestBalancer {
.storageTypes(new StorageType[] { RAM_DISK, DEFAULT }) .storageTypes(new StorageType[] { RAM_DISK, DEFAULT })
.build(); .build();
try {
cluster.waitActive(); cluster.waitActive();
// Create few files on RAM_DISK // Create few files on RAM_DISK
final String METHOD_NAME = GenericTestUtils.getMethodName(); final String METHOD_NAME = GenericTestUtils.getMethodName();
@ -1343,7 +1341,8 @@ public class TestBalancer {
// Add another fresh DN with the same type/capacity without files on RAM_DISK // Add another fresh DN with the same type/capacity without files on RAM_DISK
StorageType[][] storageTypes = new StorageType[][] {{RAM_DISK, DEFAULT}}; StorageType[][] storageTypes = new StorageType[][] {{RAM_DISK, DEFAULT}};
long[][] storageCapacities = new long[][]{{ramDiskStorageLimit, diskStorageLimit}}; long[][] storageCapacities = new long[][]{{ramDiskStorageLimit,
diskStorageLimit}};
cluster.startDataNodes(conf, REPL_FACT, storageTypes, true, null, cluster.startDataNodes(conf, REPL_FACT, storageTypes, true, null,
null, null, storageCapacities, null, false, false, false, null); null, null, storageCapacities, null, false, false, false, null);
@ -1360,9 +1359,6 @@ public class TestBalancer {
// Verify files are still on RAM_DISK // Verify files are still on RAM_DISK
DFSTestUtil.verifyFileReplicasOnStorageType(fs, client, path1, RAM_DISK); DFSTestUtil.verifyFileReplicasOnStorageType(fs, client, path1, RAM_DISK);
DFSTestUtil.verifyFileReplicasOnStorageType(fs, client, path2, RAM_DISK); DFSTestUtil.verifyFileReplicasOnStorageType(fs, client, path2, RAM_DISK);
} finally {
cluster.shutdown();
}
} }
/** /**
@ -1386,8 +1382,6 @@ public class TestBalancer {
.storageTypes(new StorageType[] { DEFAULT }) .storageTypes(new StorageType[] { DEFAULT })
.storagesPerDatanode(1) .storagesPerDatanode(1)
.build(); .build();
try {
cluster.waitActive(); cluster.waitActive();
// Create a file on the single DN // Create a file on the single DN
final String METHOD_NAME = GenericTestUtils.getMethodName(); final String METHOD_NAME = GenericTestUtils.getMethodName();
@ -1427,10 +1421,6 @@ public class TestBalancer {
// Should also work after finalization. // Should also work after finalization.
assertEquals(ExitStatus.SUCCESS.getExitCode(), assertEquals(ExitStatus.SUCCESS.getExitCode(),
Balancer.run(namenodes, p, conf)); Balancer.run(namenodes, p, conf));
} finally {
cluster.shutdown();
}
} }
/** /**
@ -1452,7 +1442,7 @@ public class TestBalancer {
conf.setLong(DFSConfigKeys.DFS_BALANCER_GETBLOCKS_MIN_BLOCK_SIZE_KEY, 1L); conf.setLong(DFSConfigKeys.DFS_BALANCER_GETBLOCKS_MIN_BLOCK_SIZE_KEY, 1L);
int numOfDatanodes =2; int numOfDatanodes =2;
final MiniDFSCluster cluster = new MiniDFSCluster.Builder(conf) cluster = new MiniDFSCluster.Builder(conf)
.numDataNodes(2) .numDataNodes(2)
.racks(new String[]{"/default/rack0", "/default/rack0"}) .racks(new String[]{"/default/rack0", "/default/rack0"})
.storagesPerDatanode(2) .storagesPerDatanode(2)
@ -1463,8 +1453,6 @@ public class TestBalancer {
{100 * blockSize, 20 * blockSize}, {100 * blockSize, 20 * blockSize},
{20 * blockSize, 100 * blockSize}}) {20 * blockSize, 100 * blockSize}})
.build(); .build();
try {
cluster.waitActive(); cluster.waitActive();
//set "/bar" directory with ONE_SSD storage policy. //set "/bar" directory with ONE_SSD storage policy.
@ -1492,10 +1480,6 @@ public class TestBalancer {
// already has one. Otherwise DN1 will have 2 replicas. // already has one. Otherwise DN1 will have 2 replicas.
// For same reason, no replicas were moved. // For same reason, no replicas were moved.
assertEquals(ExitStatus.NO_MOVE_PROGRESS.getExitCode(), r); assertEquals(ExitStatus.NO_MOVE_PROGRESS.getExitCode(), r);
} finally {
cluster.shutdown();
}
} }
/** /**
@ -1526,7 +1510,6 @@ public class TestBalancer {
int numOfDatanodes = capacities.length; int numOfDatanodes = capacities.length;
cluster = new MiniDFSCluster.Builder(conf).numDataNodes(capacities.length) cluster = new MiniDFSCluster.Builder(conf).numDataNodes(capacities.length)
.racks(racks).simulatedCapacities(capacities).build(); .racks(racks).simulatedCapacities(capacities).build();
try {
cluster.waitActive(); cluster.waitActive();
client = NameNodeProxies.createProxy(conf, client = NameNodeProxies.createProxy(conf,
cluster.getFileSystem(0).getUri(), ClientProtocol.class).getProxy(); cluster.getFileSystem(0).getUri(), ClientProtocol.class).getProxy();
@ -1567,9 +1550,6 @@ public class TestBalancer {
exitCode = tool.run(args); // start balancing exitCode = tool.run(args); // start balancing
assertEquals("Exit status code mismatches", assertEquals("Exit status code mismatches",
ExitStatus.SUCCESS.getExitCode(), exitCode); ExitStatus.SUCCESS.getExitCode(), exitCode);
} finally {
cluster.shutdown();
}
} }
/** Balancer should not move blocks with size < minBlockSize. */ /** Balancer should not move blocks with size < minBlockSize. */
@ -1589,8 +1569,6 @@ public class TestBalancer {
.simulatedCapacities(capacities) .simulatedCapacities(capacities)
.build(); .build();
final DistributedFileSystem dfs = cluster.getFileSystem(); final DistributedFileSystem dfs = cluster.getFileSystem();
try {
cluster.waitActive(); cluster.waitActive();
client = NameNodeProxies.createProxy(conf, dfs.getUri(), client = NameNodeProxies.createProxy(conf, dfs.getUri(),
ClientProtocol.class).getProxy(); ClientProtocol.class).getProxy();
@ -1680,9 +1658,6 @@ public class TestBalancer {
final int r = Balancer.run(namenodes, p, conf); final int r = Balancer.run(namenodes, p, conf);
assertEquals(ExitStatus.SUCCESS.getExitCode(), r); assertEquals(ExitStatus.SUCCESS.getExitCode(), r);
} }
} finally {
cluster.shutdown();
}
} }
/** /**