HDFS-7714. Simultaneous restart of HA NameNodes and DataNode can cause DataNode to register successfully with only one NameNode.(Contributed by Vinayakumar B)
(cherry picked from commit 3d15728ff5301296801e541d9b23bd1687c4adad) (cherry picked from commit a1bf7aecf7d018c5305fa3bd7a9e3ef9af3155c1) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/c1e65de5 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/c1e65de5 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/c1e65de5 Branch: refs/heads/sjlee/hdfs-merge Commit: c1e65de57e8ef760586e28cd37397ea9a7ac7944 Parents: 21d8b22 Author: Vinayakumar B <vinayakum...@apache.org> Authored: Tue Feb 10 10:43:08 2015 +0530 Committer: Sangjin Lee <sj...@apache.org> Committed: Wed Aug 12 22:58:34 2015 -0700 ---------------------------------------------------------------------- .../org/apache/hadoop/hdfs/server/datanode/BPServiceActor.java | 5 +++++ 1 file changed, 5 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/c1e65de5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPServiceActor.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPServiceActor.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPServiceActor.java index 6bdb68a..62ba1ab 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPServiceActor.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPServiceActor.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hdfs.server.datanode; import static org.apache.hadoop.util.Time.now; +import java.io.EOFException; import java.io.IOException; import java.net.InetSocketAddress; import java.net.SocketTimeoutException; @@ -802,6 +803,10 @@ class BPServiceActor implements Runnable { // Use returned registration from namenode with updated fields bpRegistration = bpNamenode.registerDatanode(bpRegistration); break; + } catch(EOFException e) { // namenode might have just restarted + LOG.info("Problem connecting to server: " + nnAddr + " :" + + e.getLocalizedMessage()); + sleepAndLogInterrupts(1000, "connecting to server"); } catch(SocketTimeoutException e) { // namenode is busy LOG.info("Problem connecting to server: " + nnAddr); sleepAndLogInterrupts(1000, "connecting to server");