Browse Source

HADOOP-3758. Shutdown datanode on version mismatch instead of retrying
continuously, preventing excessive logging at the namenode. Contributed by
lohit vijayarenu.


git-svn-id: https://svn.apache.org/repos/asf/hadoop/core/trunk@677054 13f79535-47bb-0310-9956-ffa450edef68

Christopher Douglas 17 years ago
parent
commit
72f64986ec
2 changed files with 8 additions and 2 deletions
  1. 4 0
      CHANGES.txt
  2. 4 2
      src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java

+ 4 - 0
CHANGES.txt

@@ -851,6 +851,10 @@ Release 0.17.2 - Unreleased
 
     HADOOP-3685. Unbalanced replication target. (hairong)
 
+    HADOOP-3758. Shutdown datanode on version mismatch instead of retrying
+    continuously, preventing excessive logging at the namenode.
+    (lohit vijayarenu via cdouglas)
+
 Release 0.17.1 - 2008-06-23
 
   INCOMPATIBLE CHANGES

+ 4 - 2
src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java

@@ -48,6 +48,7 @@ import org.apache.hadoop.hdfs.server.protocol.DatanodeCommand;
 import org.apache.hadoop.hdfs.server.protocol.DatanodeProtocol;
 import org.apache.hadoop.hdfs.server.protocol.DatanodeRegistration;
 import org.apache.hadoop.hdfs.server.protocol.DisallowedDatanodeException;
+import org.apache.hadoop.hdfs.server.common.IncorrectVersionException;
 import org.apache.hadoop.hdfs.server.protocol.InterDatanodeProtocol;
 import org.apache.hadoop.hdfs.server.protocol.NamespaceInfo;
 import org.apache.hadoop.hdfs.server.protocol.UpgradeCommand;
@@ -667,6 +668,7 @@ public class DataNode extends Configured
           // -- Total capacity
           // -- Bytes remaining
           //
+          lastHeartbeat = startTime;
           DatanodeCommand cmd = namenode.sendHeartbeat(dnRegistration,
                                                        data.getCapacity(),
                                                        data.getDfsUsed(),
@@ -675,7 +677,6 @@ public class DataNode extends Configured
                                                        getXceiverCount());
           myMetrics.heartbeats.inc(now() - startTime);
           //LOG.info("Just sent heartbeat, with name " + localName);
-          lastHeartbeat = startTime;
           if (!processCommand(cmd))
             continue;
         }
@@ -765,7 +766,8 @@ public class DataNode extends Configured
       } catch(RemoteException re) {
         String reClass = re.getClassName();
         if (UnregisteredDatanodeException.class.getName().equals(reClass) ||
-            DisallowedDatanodeException.class.getName().equals(reClass)) {
+            DisallowedDatanodeException.class.getName().equals(reClass) ||
+            IncorrectVersionException.class.getName().equals(reClass)) {
           LOG.warn("DataNode is shutting down: " + 
                    StringUtils.stringifyException(re));
           shutdown();