|
@@ -27,6 +27,7 @@ import org.apache.hadoop.hdfs.DFSConfigKeys;
|
|
import org.apache.hadoop.hdfs.DFSTestUtil;
|
|
import org.apache.hadoop.hdfs.DFSTestUtil;
|
|
import org.apache.hadoop.hdfs.MiniDFSCluster;
|
|
import org.apache.hadoop.hdfs.MiniDFSCluster;
|
|
import org.apache.hadoop.hdfs.MiniDFSNNTopology;
|
|
import org.apache.hadoop.hdfs.MiniDFSNNTopology;
|
|
|
|
+import org.apache.hadoop.hdfs.protocol.DatanodeInfo;
|
|
import org.apache.hadoop.hdfs.protocol.HdfsConstants.SafeModeAction;
|
|
import org.apache.hadoop.hdfs.protocol.HdfsConstants.SafeModeAction;
|
|
import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor;
|
|
import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor;
|
|
import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager;
|
|
import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager;
|
|
@@ -56,6 +57,7 @@ import java.util.concurrent.TimeUnit;
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertNotNull;
|
|
import static org.junit.Assert.assertNotNull;
|
|
import static org.junit.Assert.assertNull;
|
|
import static org.junit.Assert.assertNull;
|
|
|
|
+import static org.junit.Assert.assertFalse;
|
|
import static org.junit.Assert.assertTrue;
|
|
import static org.junit.Assert.assertTrue;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -93,6 +95,12 @@ public class TestNameNodeMXBean {
|
|
dd.setUpgradeDomain(upgradeDomain);
|
|
dd.setUpgradeDomain(upgradeDomain);
|
|
String dnXferAddrWithUpgradeDomainSet = dd.getXferAddr();
|
|
String dnXferAddrWithUpgradeDomainSet = dd.getXferAddr();
|
|
|
|
|
|
|
|
+ // Put the second DN to maintenance state.
|
|
|
|
+ DatanodeDescriptor maintenanceNode = dm.getDatanode(
|
|
|
|
+ cluster.getDataNodes().get(1).getDatanodeId());
|
|
|
|
+ maintenanceNode.setInMaintenance();
|
|
|
|
+ String dnXferAddrInMaintenance = maintenanceNode.getXferAddr();
|
|
|
|
+
|
|
FSNamesystem fsn = cluster.getNameNode().namesystem;
|
|
FSNamesystem fsn = cluster.getNameNode().namesystem;
|
|
|
|
|
|
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
|
|
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
|
|
@@ -151,6 +159,10 @@ public class TestNameNodeMXBean {
|
|
} else {
|
|
} else {
|
|
assertTrue(liveNode.get("upgradeDomain").equals(upgradeDomain));
|
|
assertTrue(liveNode.get("upgradeDomain").equals(upgradeDomain));
|
|
}
|
|
}
|
|
|
|
+ // "adminState" is set to maintenance only for the specific dn.
|
|
|
|
+ boolean inMaintenance = liveNode.get("adminState").equals(
|
|
|
|
+ DatanodeInfo.AdminStates.IN_MAINTENANCE.toString());
|
|
|
|
+ assertFalse(xferAddr.equals(dnXferAddrInMaintenance) ^ inMaintenance);
|
|
}
|
|
}
|
|
assertEquals(fsn.getLiveNodes(), alivenodeinfo);
|
|
assertEquals(fsn.getLiveNodes(), alivenodeinfo);
|
|
// get attribute deadnodeinfo
|
|
// get attribute deadnodeinfo
|
|
@@ -164,7 +176,8 @@ public class TestNameNodeMXBean {
|
|
// get attribute NameJournalStatus
|
|
// get attribute NameJournalStatus
|
|
String nameJournalStatus = (String) (mbs.getAttribute(mxbeanName,
|
|
String nameJournalStatus = (String) (mbs.getAttribute(mxbeanName,
|
|
"NameJournalStatus"));
|
|
"NameJournalStatus"));
|
|
- assertEquals("Bad value for NameJournalStatus", fsn.getNameJournalStatus(), nameJournalStatus);
|
|
|
|
|
|
+ assertEquals("Bad value for NameJournalStatus",
|
|
|
|
+ fsn.getNameJournalStatus(), nameJournalStatus);
|
|
// get attribute JournalTransactionInfo
|
|
// get attribute JournalTransactionInfo
|
|
String journalTxnInfo = (String) mbs.getAttribute(mxbeanName,
|
|
String journalTxnInfo = (String) mbs.getAttribute(mxbeanName,
|
|
"JournalTransactionInfo");
|
|
"JournalTransactionInfo");
|
|
@@ -172,11 +185,13 @@ public class TestNameNodeMXBean {
|
|
journalTxnInfo);
|
|
journalTxnInfo);
|
|
// get attribute "CompileInfo"
|
|
// get attribute "CompileInfo"
|
|
String compileInfo = (String) mbs.getAttribute(mxbeanName, "CompileInfo");
|
|
String compileInfo = (String) mbs.getAttribute(mxbeanName, "CompileInfo");
|
|
- assertEquals("Bad value for CompileInfo", fsn.getCompileInfo(), compileInfo);
|
|
|
|
|
|
+ assertEquals("Bad value for CompileInfo", fsn.getCompileInfo(),
|
|
|
|
+ compileInfo);
|
|
// get attribute CorruptFiles
|
|
// get attribute CorruptFiles
|
|
String corruptFiles = (String) (mbs.getAttribute(mxbeanName,
|
|
String corruptFiles = (String) (mbs.getAttribute(mxbeanName,
|
|
"CorruptFiles"));
|
|
"CorruptFiles"));
|
|
- assertEquals("Bad value for CorruptFiles", fsn.getCorruptFiles(), corruptFiles);
|
|
|
|
|
|
+ assertEquals("Bad value for CorruptFiles", fsn.getCorruptFiles(),
|
|
|
|
+ corruptFiles);
|
|
// get attribute NameDirStatuses
|
|
// get attribute NameDirStatuses
|
|
String nameDirStatuses = (String) (mbs.getAttribute(mxbeanName,
|
|
String nameDirStatuses = (String) (mbs.getAttribute(mxbeanName,
|
|
"NameDirStatuses"));
|
|
"NameDirStatuses"));
|
|
@@ -188,7 +203,8 @@ public class TestNameNodeMXBean {
|
|
File nameDir = new File(nameDirUri);
|
|
File nameDir = new File(nameDirUri);
|
|
System.out.println("Checking for the presence of " + nameDir +
|
|
System.out.println("Checking for the presence of " + nameDir +
|
|
" in active name dirs.");
|
|
" in active name dirs.");
|
|
- assertTrue(statusMap.get("active").containsKey(nameDir.getAbsolutePath()));
|
|
|
|
|
|
+ assertTrue(statusMap.get("active").containsKey(
|
|
|
|
+ nameDir.getAbsolutePath()));
|
|
}
|
|
}
|
|
assertEquals(2, statusMap.get("active").size());
|
|
assertEquals(2, statusMap.get("active").size());
|
|
assertEquals(0, statusMap.get("failed").size());
|
|
assertEquals(0, statusMap.get("failed").size());
|