You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by in...@apache.org on 2018/05/17 21:50:13 UTC
[4/5] hadoop git commit: HDFS-13554.
TestDatanodeRegistration#testForcedRegistration does not shut down cluster.
Contributed by Anbang Hu.
HDFS-13554. TestDatanodeRegistration#testForcedRegistration does not shut down cluster. Contributed by Anbang Hu.
(cherry picked from commit 65476458fa05656010809be632356e4015b59a17)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/315ffd1a
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/315ffd1a
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/315ffd1a
Branch: refs/heads/branch-2
Commit: 315ffd1ada2ca3d7fe16b16a2c80d695520b228e
Parents: b87cd63
Author: Inigo Goiri <in...@apache.org>
Authored: Thu May 17 14:48:04 2018 -0700
Committer: Inigo Goiri <in...@apache.org>
Committed: Thu May 17 14:49:37 2018 -0700
----------------------------------------------------------------------
.../hadoop/hdfs/TestDatanodeRegistration.java | 149 ++++++++++---------
1 file changed, 78 insertions(+), 71 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/315ffd1a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDatanodeRegistration.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDatanodeRegistration.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDatanodeRegistration.java
index 46bf2ca..4916f8a 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDatanodeRegistration.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDatanodeRegistration.java
@@ -331,86 +331,93 @@ public class TestDatanodeRegistration {
conf.setInt(DFSConfigKeys.DFS_NAMENODE_HANDLER_COUNT_KEY, 4);
conf.setLong(DFSConfigKeys.DFS_BLOCKREPORT_INTERVAL_MSEC_KEY, Integer.MAX_VALUE);
- final MiniDFSCluster cluster =
- new MiniDFSCluster.Builder(conf).numDataNodes(1).build();
- cluster.waitActive();
- cluster.getHttpUri(0);
- FSNamesystem fsn = cluster.getNamesystem();
- String bpId = fsn.getBlockPoolId();
+ MiniDFSCluster cluster = null;
+ try {
+ cluster = new MiniDFSCluster.Builder(conf).numDataNodes(1).build();
+ cluster.waitActive();
+ cluster.getHttpUri(0);
+ FSNamesystem fsn = cluster.getNamesystem();
+ String bpId = fsn.getBlockPoolId();
- DataNode dn = cluster.getDataNodes().get(0);
- DatanodeDescriptor dnd =
- NameNodeAdapter.getDatanode(fsn, dn.getDatanodeId());
- DataNodeTestUtils.setHeartbeatsDisabledForTests(dn, true);
- DatanodeStorageInfo storage = dnd.getStorageInfos()[0];
+ DataNode dn = cluster.getDataNodes().get(0);
+ DatanodeDescriptor dnd =
+ NameNodeAdapter.getDatanode(fsn, dn.getDatanodeId());
+ DataNodeTestUtils.setHeartbeatsDisabledForTests(dn, true);
+ DatanodeStorageInfo storage = dnd.getStorageInfos()[0];
- // registration should not change after heartbeat.
- assertTrue(dnd.isRegistered());
- DatanodeRegistration lastReg = dn.getDNRegistrationForBP(bpId);
- waitForHeartbeat(dn, dnd);
- assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
+ // registration should not change after heartbeat.
+ assertTrue(dnd.isRegistered());
+ DatanodeRegistration lastReg = dn.getDNRegistrationForBP(bpId);
+ waitForHeartbeat(dn, dnd);
+ assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
- // force a re-registration on next heartbeat.
- dnd.setForceRegistration(true);
- assertFalse(dnd.isRegistered());
- waitForHeartbeat(dn, dnd);
- assertTrue(dnd.isRegistered());
- DatanodeRegistration newReg = dn.getDNRegistrationForBP(bpId);
- assertNotSame(lastReg, newReg);
- lastReg = newReg;
+ // force a re-registration on next heartbeat.
+ dnd.setForceRegistration(true);
+ assertFalse(dnd.isRegistered());
+ waitForHeartbeat(dn, dnd);
+ assertTrue(dnd.isRegistered());
+ DatanodeRegistration newReg = dn.getDNRegistrationForBP(bpId);
+ assertNotSame(lastReg, newReg);
+ lastReg = newReg;
- // registration should not change on subsequent heartbeats.
- waitForHeartbeat(dn, dnd);
- assertTrue(dnd.isRegistered());
- assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
- assertTrue(waitForBlockReport(dn, dnd));
- assertTrue(dnd.isRegistered());
- assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
+ // registration should not change on subsequent heartbeats.
+ waitForHeartbeat(dn, dnd);
+ assertTrue(dnd.isRegistered());
+ assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
+ assertTrue(waitForBlockReport(dn, dnd));
+ assertTrue(dnd.isRegistered());
+ assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
- // check that block report is not processed and registration didn't change.
- dnd.setForceRegistration(true);
- assertFalse(waitForBlockReport(dn, dnd));
- assertFalse(dnd.isRegistered());
- assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
+ // check that block report is not processed and registration didn't
+ // change.
+ dnd.setForceRegistration(true);
+ assertFalse(waitForBlockReport(dn, dnd));
+ assertFalse(dnd.isRegistered());
+ assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
- // heartbeat should trigger re-registration, and next block report should
- // not change registration.
- waitForHeartbeat(dn, dnd);
- assertTrue(dnd.isRegistered());
- newReg = dn.getDNRegistrationForBP(bpId);
- assertNotSame(lastReg, newReg);
- lastReg = newReg;
- assertTrue(waitForBlockReport(dn, dnd));
- assertTrue(dnd.isRegistered());
- assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
+ // heartbeat should trigger re-registration, and next block report
+ // should not change registration.
+ waitForHeartbeat(dn, dnd);
+ assertTrue(dnd.isRegistered());
+ newReg = dn.getDNRegistrationForBP(bpId);
+ assertNotSame(lastReg, newReg);
+ lastReg = newReg;
+ assertTrue(waitForBlockReport(dn, dnd));
+ assertTrue(dnd.isRegistered());
+ assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
- // registration doesn't change.
- ExtendedBlock eb = new ExtendedBlock(bpId, 1234);
- dn.notifyNamenodeDeletedBlock(eb, storage.getStorageID());
- DataNodeTestUtils.triggerDeletionReport(dn);
- assertTrue(dnd.isRegistered());
- assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
+ // registration doesn't change.
+ ExtendedBlock eb = new ExtendedBlock(bpId, 1234);
+ dn.notifyNamenodeDeletedBlock(eb, storage.getStorageID());
+ DataNodeTestUtils.triggerDeletionReport(dn);
+ assertTrue(dnd.isRegistered());
+ assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
- // a failed IBR will effectively unregister the node.
- boolean failed = false;
- try {
- // pass null to cause a failure since there aren't any easy failure
- // modes since it shouldn't happen.
- fsn.processIncrementalBlockReport(lastReg, null);
- } catch (NullPointerException npe) {
- failed = true;
- }
- assertTrue("didn't fail", failed);
- assertFalse(dnd.isRegistered());
+ // a failed IBR will effectively unregister the node.
+ boolean failed = false;
+ try {
+ // pass null to cause a failure since there aren't any easy failure
+ // modes since it shouldn't happen.
+ fsn.processIncrementalBlockReport(lastReg, null);
+ } catch (NullPointerException npe) {
+ failed = true;
+ }
+ assertTrue("didn't fail", failed);
+ assertFalse(dnd.isRegistered());
- // should remain unregistered until next heartbeat.
- dn.notifyNamenodeDeletedBlock(eb, storage.getStorageID());
- DataNodeTestUtils.triggerDeletionReport(dn);
- assertFalse(dnd.isRegistered());
- assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
- waitForHeartbeat(dn, dnd);
- assertTrue(dnd.isRegistered());
- assertNotSame(lastReg, dn.getDNRegistrationForBP(bpId));
+ // should remain unregistered until next heartbeat.
+ dn.notifyNamenodeDeletedBlock(eb, storage.getStorageID());
+ DataNodeTestUtils.triggerDeletionReport(dn);
+ assertFalse(dnd.isRegistered());
+ assertSame(lastReg, dn.getDNRegistrationForBP(bpId));
+ waitForHeartbeat(dn, dnd);
+ assertTrue(dnd.isRegistered());
+ assertNotSame(lastReg, dn.getDNRegistrationForBP(bpId));
+ } finally {
+ if (cluster != null) {
+ cluster.shutdown();
+ }
+ }
}
private void waitForHeartbeat(final DataNode dn, final DatanodeDescriptor dnd)
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org