Sfoglia il codice sorgente

HDFS-2679. Add interface to query current state to HAServiceProtocol. Contributed by Eli Collins.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/HDFS-1623@1220612 13f79535-47bb-0310-9956-ffa450edef68
Todd Lipcon 13 anni fa
parent
commit
329717264f

+ 2 - 0
hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt

@@ -63,3 +63,5 @@ HDFS-2602. NN should log newly-allocated blocks without losing BlockInfo (atm)
 HDFS-2667. Fix transition from active to standby (todd)
 
 HDFS-2684. Fix up some failing unit tests on HA branch (todd)
+
+HDFS-2679. Add interface to query current state to HAServiceProtocol (eli via todd)

+ 6 - 1
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java

@@ -30,6 +30,7 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.HadoopIllegalArgumentException;
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.ha.HAServiceProtocol.HAServiceState;
 import org.apache.hadoop.ha.HealthCheckFailedException;
 import org.apache.hadoop.ha.ServiceFailedException;
 import org.apache.hadoop.fs.CommonConfigurationKeys;
@@ -908,7 +909,11 @@ public class NameNode {
     }
     state.setState(haContext, STANDBY_STATE);
   }
-  
+
+  synchronized HAServiceState getServiceState() {
+    return state.getServiceState();
+  }
+
   /** Check if an operation of given category is allowed */
   protected synchronized void checkOperation(final OperationCategory op)
       throws StandbyException {

+ 6 - 1
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java

@@ -1061,7 +1061,12 @@ class NameNodeRpcServer implements NamenodeProtocols {
   public synchronized void transitionToStandby() throws ServiceFailedException {
     nn.transitionToStandby();
   }
-  
+
+  @Override // HAServiceProtocol
+  public synchronized HAServiceState getServiceState() {
+    return nn.getServiceState();
+  }
+
   /**
    * Verify version.
    * 

+ 2 - 2
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/ActiveState.java

@@ -20,10 +20,10 @@ package org.apache.hadoop.hdfs.server.namenode.ha;
 import java.io.IOException;
 
 import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.ha.HAServiceProtocol.HAServiceState;
 import org.apache.hadoop.ha.ServiceFailedException;
 import org.apache.hadoop.hdfs.server.namenode.NameNode;
 import org.apache.hadoop.hdfs.server.namenode.NameNode.OperationCategory;
-import org.apache.hadoop.hdfs.server.namenode.UnsupportedActionException;
 
 /**
  * Active state of the namenode. In this state, namenode provides the namenode
@@ -33,7 +33,7 @@ import org.apache.hadoop.hdfs.server.namenode.UnsupportedActionException;
 @InterfaceAudience.Private
 public class ActiveState extends HAState {
   public ActiveState() {
-    super("active");
+    super(HAServiceState.ACTIVE);
   }
 
   @Override

+ 16 - 6
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/HAState.java

@@ -18,6 +18,7 @@
 package org.apache.hadoop.hdfs.server.namenode.ha;
 
 import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.ha.HAServiceProtocol.HAServiceState;
 import org.apache.hadoop.ha.ServiceFailedException;
 import org.apache.hadoop.hdfs.server.namenode.NameNode.OperationCategory;
 import org.apache.hadoop.hdfs.server.namenode.UnsupportedActionException;
@@ -28,14 +29,21 @@ import org.apache.hadoop.ipc.StandbyException;
  */
 @InterfaceAudience.Private
 abstract public class HAState {
-  protected final String name;
+  protected final HAServiceState state;
 
   /**
    * Constructor
    * @param name Name of the state.
    */
-  public HAState(String name) {
-    this.name = name;
+  public HAState(HAServiceState state) {
+    this.state = state;
+  }
+
+  /**
+   * @return the generic service state
+   */
+  public HAServiceState getServiceState() {
+    return state;
   }
 
   /**
@@ -92,9 +100,11 @@ abstract public class HAState {
    */
   public abstract void checkOperation(final HAContext context, final OperationCategory op)
       throws StandbyException;
-  
-  @Override
+
+  /**
+   * @return String representation of the service state.
+   */
   public String toString() {
-    return super.toString();
+    return state.toString();
   }
 }

+ 2 - 1
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyState.java

@@ -21,6 +21,7 @@ import java.io.IOException;
 
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.ha.ServiceFailedException;
+import org.apache.hadoop.ha.HAServiceProtocol.HAServiceState;
 import org.apache.hadoop.hdfs.server.namenode.NameNode;
 import org.apache.hadoop.hdfs.server.namenode.NameNode.OperationCategory;
 import org.apache.hadoop.ipc.StandbyException;
@@ -39,7 +40,7 @@ import org.apache.hadoop.ipc.StandbyException;
 @InterfaceAudience.Private
 public class StandbyState extends HAState {
   public StandbyState() {
-    super("standby");
+    super(HAServiceState.STANDBY);
   }
 
   @Override