This is an automated email from the ASF dual-hosted git repository.

nanda pushed a commit to branch HDDS-2823
in repository https://gitbox.apache.org/repos/asf/hadoop-ozone.git


The following commit(s) were added to refs/heads/HDDS-2823 by this push:
     new 8791179  HDDS-3671. Introduce SCMStateMachineHandler marker interface. 
(#1008)
8791179 is described below

commit 8791179892f4d7acd3109e39e578e68c1c9b1b71
Author: Nandakumar <[email protected]>
AuthorDate: Thu Jun 4 21:16:49 2020 +0530

    HDDS-3671. Introduce SCMStateMachineHandler marker interface. (#1008)
---
 .../scm/container/ContainerStateManagerV2.java     |  3 ++-
 .../hadoop/hdds/scm/ha/SCMHAInvocationHandler.java | 22 +++++++++---------
 .../apache/hadoop/hdds/scm/ha/SCMRatisServer.java  |  3 ++-
 .../hadoop/hdds/scm/ha/SCMRatisServerImpl.java     |  4 ++--
 .../apache/hadoop/hdds/scm/ha/SCMStateMachine.java |  7 +++---
 .../hadoop/hdds/scm/ha/SCMStateMachineHandler.java | 27 ++++++++++++++++++++++
 .../hadoop/hdds/scm/pipeline/StateManager.java     |  3 ++-
 .../hadoop/hdds/scm/ha/MockSCMHAManager.java       |  4 ++--
 8 files changed, 52 insertions(+), 21 deletions(-)

diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManagerV2.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManagerV2.java
index 3520b01..7c40b33 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManagerV2.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManagerV2.java
@@ -22,6 +22,7 @@ import java.util.Set;
 
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ContainerInfoProto;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos.LifeCycleState;
+import org.apache.hadoop.hdds.scm.ha.SCMStateMachineHandler;
 import org.apache.hadoop.hdds.scm.metadata.Replicate;
 
 /**
@@ -42,7 +43,7 @@ import org.apache.hadoop.hdds.scm.metadata.Replicate;
  * 4. The declaration should throw RaftException
  *
  */
-public interface ContainerStateManagerV2 {
+public interface ContainerStateManagerV2 extends SCMStateMachineHandler {
 
   //TODO: Rename this to ContainerStateManager
 
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMHAInvocationHandler.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMHAInvocationHandler.java
index cbe2ce3..4090ce9 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMHAInvocationHandler.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMHAInvocationHandler.java
@@ -38,19 +38,19 @@ public class SCMHAInvocationHandler implements 
InvocationHandler {
       .getLogger(SCMHAInvocationHandler.class);
 
   private final RequestType requestType;
-  private final Object localHandler;
-  private final SCMRatisServer ratisHandler;
+  private final SCMStateMachineHandler handler;
+  private final SCMRatisServer ratisServer;
 
   /**
    * TODO.
    */
   public SCMHAInvocationHandler(final RequestType requestType,
-                                final Object localHandler,
-                                final SCMRatisServer ratisHandler) {
+                                final SCMStateMachineHandler handler,
+                                final SCMRatisServer ratisServer) {
     this.requestType = requestType;
-    this.localHandler = localHandler;
-    this.ratisHandler = ratisHandler;
-    ratisHandler.registerStateMachineHandler(requestType, localHandler);
+    this.handler = handler;
+    this.ratisServer = ratisServer;
+    ratisServer.registerStateMachineHandler(requestType, handler);
   }
 
   @Override
@@ -73,8 +73,8 @@ public class SCMHAInvocationHandler implements 
InvocationHandler {
   private Object invokeLocal(Method method, Object[] args)
       throws InvocationTargetException, IllegalAccessException {
     LOG.trace("Invoking method {} on target {} with arguments {}",
-        method, localHandler, args);
-    return method.invoke(localHandler, args);
+        method, handler, args);
+    return method.invoke(handler, args);
   }
 
   /**
@@ -82,8 +82,8 @@ public class SCMHAInvocationHandler implements 
InvocationHandler {
    */
   private Object invokeRatis(Method method, Object[] args)
       throws Exception {
-    LOG.trace("Invoking method {} on target {}", method, ratisHandler);
-    final SCMRatisResponse response =  ratisHandler.submitRequest(
+    LOG.trace("Invoking method {} on target {}", method, ratisServer);
+    final SCMRatisResponse response =  ratisServer.submitRequest(
         SCMRatisRequest.of(requestType, method.getName(), args));
     if (response.isSuccess()) {
       return response.getResult();
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisServer.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisServer.java
index 4ddbc7b..1776284 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisServer.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisServer.java
@@ -29,7 +29,8 @@ public interface SCMRatisServer {
 
   void start() throws IOException;
 
-  void registerStateMachineHandler(RequestType handlerType, Object handler);
+  void registerStateMachineHandler(RequestType handlerType,
+                                   SCMStateMachineHandler handler);
 
   SCMRatisResponse submitRequest(SCMRatisRequest request)
       throws IOException, ExecutionException, InterruptedException;
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisServerImpl.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisServerImpl.java
index 45ae212..ad12d0a 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisServerImpl.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisServerImpl.java
@@ -85,8 +85,8 @@ public class SCMRatisServerImpl implements SCMRatisServer {
   }
 
   @Override
-  public void registerStateMachineHandler(final RequestType handlerType,
-                                          final Object handler) {
+  public void registerStateMachineHandler(
+      final RequestType handlerType, final SCMStateMachineHandler handler) {
     scmStateMachine.registerHandler(handlerType, handler);
   }
 
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMStateMachine.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMStateMachine.java
index b10dd54..0cdebc4 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMStateMachine.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMStateMachine.java
@@ -37,13 +37,14 @@ import 
org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol.RequestType;
  */
 public class SCMStateMachine extends BaseStateMachine {
 
-  private final Map<RequestType, Object> handlers;
+  private final Map<RequestType, SCMStateMachineHandler> handlers;
 
   public SCMStateMachine() {
     this.handlers = new EnumMap<>(RequestType.class);
   }
 
-  public void registerHandler(RequestType type, Object handler) {
+  public void registerHandler(final RequestType type,
+                              final SCMStateMachineHandler handler) {
     handlers.put(type, handler);
   }
 
@@ -65,7 +66,7 @@ public class SCMStateMachine extends BaseStateMachine {
   private Message process(final SCMRatisRequest request)
       throws Exception {
     try {
-      final Object handler = handlers.get(request.getType());
+      final SCMStateMachineHandler handler = handlers.get(request.getType());
 
       if (handler == null) {
         throw new IOException("No handler found for request type " +
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMStateMachineHandler.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMStateMachineHandler.java
new file mode 100644
index 0000000..cb09f73
--- /dev/null
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMStateMachineHandler.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * <p>
+ * <p>http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * <p>Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations 
under
+ * the License.
+ */
+
+package org.apache.hadoop.hdds.scm.ha;
+
+/**
+ * All the SCM StateMachine Handler have to implement this interface. <p>
+ * The SCMStateMachineHandler interface has no methods or fields
+ * and serves only to identify the semantics of being StateMachineHandler
+ * of SCMStateMachine.
+ */
+public interface SCMStateMachineHandler {
+}
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/StateManager.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/StateManager.java
index 3a772e5..ef856a5 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/StateManager.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/StateManager.java
@@ -20,6 +20,7 @@ package org.apache.hadoop.hdds.scm.pipeline;
 import org.apache.hadoop.hdds.protocol.DatanodeDetails;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
 import org.apache.hadoop.hdds.scm.container.ContainerID;
+import org.apache.hadoop.hdds.scm.ha.SCMStateMachineHandler;
 import org.apache.hadoop.hdds.scm.metadata.Replicate;
 
 import java.io.IOException;
@@ -31,7 +32,7 @@ import java.util.NavigableSet;
  * Manages the state of pipelines in SCM.
  * TODO Rename to PipelineStateManager once the old state manager is removed.
  */
-public interface StateManager {
+public interface StateManager extends SCMStateMachineHandler {
 
   /**
    * Adding pipeline would be replicated to Ratis.
diff --git 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/MockSCMHAManager.java
 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/MockSCMHAManager.java
index c3b14fb..976860d 100644
--- 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/MockSCMHAManager.java
+++ 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/MockSCMHAManager.java
@@ -91,8 +91,8 @@ public final class MockSCMHAManager implements SCMHAManager {
     }
 
     @Override
-    public void registerStateMachineHandler(final RequestType handlerType,
-                                            final Object handler) {
+    public void registerStateMachineHandler(
+        final RequestType handlerType, final SCMStateMachineHandler handler) {
       handlers.put(handlerType, handler);
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to