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]