You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by ar...@apache.org on 2013/11/04 03:13:04 UTC
svn commit: r1538496 - in
/hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs: ./
src/main/java/org/apache/hadoop/hdfs/protocol/
src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/
src/main/java/org/apache/hadoop/hdfs/server/data...
Author: arp
Date: Mon Nov 4 02:13:04 2013
New Revision: 1538496
URL: http://svn.apache.org/r1538496
Log:
HDFS-5448. Datanode should generate its ID on first registration
Modified:
hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/CHANGES_HDFS-2832.txt
hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeID.java
hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java
hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
Modified: hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/CHANGES_HDFS-2832.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/CHANGES_HDFS-2832.txt?rev=1538496&r1=1538495&r2=1538496&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/CHANGES_HDFS-2832.txt (original)
+++ hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/CHANGES_HDFS-2832.txt Mon Nov 4 02:13:04 2013
@@ -61,4 +61,7 @@ IMPROVEMENTS:
HDFS-5447. Fix TestJspHelper. (Arpit Agarwal)
HDFS-5452. Fix TestReplicationPolicy and TestBlocksScheduledCounter.
- (szetszwo)
+
+ HDFS-5448. Datanode should generate its ID on first registration. (Arpit
+ Agarwal)
+
Modified: hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeID.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeID.java?rev=1538496&r1=1538495&r2=1538496&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeID.java (original)
+++ hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeID.java Mon Nov 4 02:13:04 2013
@@ -113,11 +113,6 @@ public class DatanodeID implements Compa
}
}
- public String generateNewDatanodeUuid() {
- datanodeUuid = UUID.randomUUID().toString();
- return datanodeUuid;
- }
-
/**
* @return ipAddr;
*/
Modified: hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java?rev=1538496&r1=1538495&r2=1538496&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java (original)
+++ hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java Mon Nov 4 02:13:04 2013
@@ -845,18 +845,6 @@ public class DatanodeManager {
return;
}
- // This is a new datanode.
- if (nodeReg.getDatanodeUuid() == null ||
- nodeReg.getDatanodeUuid().isEmpty()) {
- // this data node has never been registered
- nodeReg.generateNewDatanodeUuid();
- if (NameNode.stateChangeLog.isDebugEnabled()) {
- NameNode.stateChangeLog.debug(
- "BLOCK* NameSystem.registerDatanode: "
- + "new Datanode UUID " + nodeReg.getDatanodeUuid() + " assigned.");
- }
- }
-
DatanodeDescriptor nodeDescr
= new DatanodeDescriptor(nodeReg, NetworkTopology.DEFAULT_RACK);
boolean success = false;
Modified: hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java?rev=1538496&r1=1538495&r2=1538496&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java (original)
+++ hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java Mon Nov 4 02:13:04 2013
@@ -694,15 +694,34 @@ public class DataNode extends Configured
}
/**
+ * Verify that the DatanodeUuid has been initialized. If this is a new
+ * datanode then we generate a new Datanode Uuid and persist it to disk.
+ *
+ * @throws IOException
+ */
+ private synchronized void checkDatanodeUuid() throws IOException {
+ if (storage.getDatanodeUuid() == null) {
+ storage.setDatanodeUuid(UUID.randomUUID().toString());
+ storage.writeAll();
+ LOG.info("Generated and persisted new Datanode UUID " +
+ storage.getDatanodeUuid());
+ }
+ }
+
+ /**
* Create a DatanodeRegistration for a specific block pool.
* @param nsInfo the namespace info from the first part of the NN handshake
*/
- DatanodeRegistration createBPRegistration(NamespaceInfo nsInfo) {
+ DatanodeRegistration createBPRegistration(NamespaceInfo nsInfo)
+ throws IOException {
StorageInfo storageInfo = storage.getBPStorage(nsInfo.getBlockPoolID());
if (storageInfo == null) {
// it's null in the case of SimulatedDataSet
storageInfo = new StorageInfo(nsInfo);
}
+
+ checkDatanodeUuid();
+
DatanodeID dnId = new DatanodeID(
streamingAddr.getAddress().getHostAddress(), hostName,
storage.getDatanodeUuid(), getXferPort(), getInfoPort(),
@@ -724,13 +743,7 @@ public class DataNode extends Configured
id = bpRegistration;
}
- if (storage.getDatanodeUuid() == null) {
- // This is a fresh datanode, persist the NN-provided Datanode ID
- storage.setDatanodeUuid(bpRegistration.getDatanodeUuid());
- storage.writeAll();
- LOG.info("Datanode ID " + bpRegistration.getDatanodeUuid()
- + " is assigned to new storage " + bpRegistration);
- } else if(!storage.getDatanodeUuid().equals(bpRegistration.getDatanodeUuid())) {
+ if(!storage.getDatanodeUuid().equals(bpRegistration.getDatanodeUuid())) {
throw new IOException("Inconsistent Datanode IDs. Name-node returned "
+ bpRegistration.getDatanodeUuid()
+ ". Expecting " + storage.getDatanodeUuid());