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

adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new 1513c34e2f HDDS-11883. SCM HA: Move proxy object creation code to 
SCMRatisServer (#7914)
1513c34e2f is described below

commit 1513c34e2f2baad966e1579157d707f8f9352427
Author: Nandakumar Vadivelu <[email protected]>
AuthorDate: Thu Feb 20 16:13:17 2025 +0530

    HDDS-11883. SCM HA: Move proxy object creation code to SCMRatisServer 
(#7914)
---
 .../scm/block/DeletedBlockLogStateManagerImpl.java    | 19 +++++--------------
 .../hdds/scm/container/ContainerStateManagerImpl.java | 11 ++---------
 .../org/apache/hadoop/hdds/scm/ha/SCMRatisServer.java |  8 ++++++++
 .../hadoop/hdds/scm/ha/SequenceIdGenerator.java       |  9 +--------
 .../hdds/scm/ha/StatefulServiceStateManagerImpl.java  | 10 ++--------
 .../hdds/scm/pipeline/PipelineStateManagerImpl.java   | 13 +++----------
 .../hdds/scm/security/RootCARotationHandlerImpl.java  | 11 ++---------
 .../hdds/scm/security/ScmSecretKeyStateBuilder.java   | 12 ++----------
 .../apache/hadoop/hdds/scm/server/SCMCertStore.java   | 16 +++-------------
 .../server/upgrade/FinalizationStateManagerImpl.java  | 13 +++----------
 .../hadoop/hdds/scm/ha/TestReplicationAnnotation.java | 12 +++---------
 .../hadoop/hdds/scm/server/TestSCMCertStore.java      | 13 ++++++++++++-
 12 files changed, 46 insertions(+), 101 deletions(-)

diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/block/DeletedBlockLogStateManagerImpl.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/block/DeletedBlockLogStateManagerImpl.java
index 66220817f9..f7b2ce819b 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/block/DeletedBlockLogStateManagerImpl.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/block/DeletedBlockLogStateManagerImpl.java
@@ -19,7 +19,6 @@
 
 import com.google.common.base.Preconditions;
 import java.io.IOException;
-import java.lang.reflect.Proxy;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
@@ -28,11 +27,10 @@
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import org.apache.hadoop.hdds.conf.ConfigurationSource;
-import org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol;
+import org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol.RequestType;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.DeletedBlocksTransaction;
 import org.apache.hadoop.hdds.scm.container.ContainerID;
 import org.apache.hadoop.hdds.scm.container.ContainerManager;
-import org.apache.hadoop.hdds.scm.ha.SCMHAInvocationHandler;
 import org.apache.hadoop.hdds.scm.ha.SCMRatisServer;
 import org.apache.hadoop.hdds.scm.metadata.DBTransactionBuffer;
 import org.apache.hadoop.hdds.utils.db.Table;
@@ -302,18 +300,11 @@ public DeletedBlockLogStateManager build() {
       Preconditions.checkNotNull(conf);
       Preconditions.checkNotNull(table);
 
-      final DeletedBlockLogStateManager impl =
-          new DeletedBlockLogStateManagerImpl(conf, table, containerManager,
-              transactionBuffer);
+      final DeletedBlockLogStateManager impl = new 
DeletedBlockLogStateManagerImpl(
+          conf, table, containerManager, transactionBuffer);
 
-      final SCMHAInvocationHandler invocationHandler =
-          new SCMHAInvocationHandler(SCMRatisProtocol.RequestType.BLOCK,
-              impl, scmRatisServer);
-
-      return (DeletedBlockLogStateManager) Proxy.newProxyInstance(
-          SCMHAInvocationHandler.class.getClassLoader(),
-          new Class<?>[]{DeletedBlockLogStateManager.class},
-          invocationHandler);
+      return scmRatisServer.getProxyHandler(RequestType.BLOCK,
+          DeletedBlockLogStateManager.class, impl);
     }
   }
 }
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManagerImpl.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManagerImpl.java
index ed499c1e62..cd7496535b 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManagerImpl.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManagerImpl.java
@@ -35,7 +35,6 @@
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.Striped;
 import java.io.IOException;
-import java.lang.reflect.Proxy;
 import java.util.EnumMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -58,7 +57,6 @@
 import org.apache.hadoop.hdds.scm.container.states.ContainerState;
 import org.apache.hadoop.hdds.scm.container.states.ContainerStateMap;
 import org.apache.hadoop.hdds.scm.ha.ExecutionUtil;
-import org.apache.hadoop.hdds.scm.ha.SCMHAInvocationHandler;
 import org.apache.hadoop.hdds.scm.ha.SCMRatisServer;
 import org.apache.hadoop.hdds.scm.metadata.DBTransactionBuffer;
 import org.apache.hadoop.hdds.scm.pipeline.PipelineID;
@@ -611,13 +609,8 @@ public ContainerStateManager build() throws IOException {
           conf, pipelineMgr, table, transactionBuffer,
           containerReplicaPendingOps);
 
-      final SCMHAInvocationHandler invocationHandler =
-          new SCMHAInvocationHandler(RequestType.CONTAINER, csm,
-              scmRatisServer);
-
-      return (ContainerStateManager) Proxy.newProxyInstance(
-          SCMHAInvocationHandler.class.getClassLoader(),
-          new Class<?>[]{ContainerStateManager.class}, invocationHandler);
+      return scmRatisServer.getProxyHandler(RequestType.CONTAINER,
+          ContainerStateManager.class, csm);
     }
 
   }
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 8a271c1aee..48aac0a3d8 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
@@ -18,6 +18,7 @@
 package org.apache.hadoop.hdds.scm.ha;
 
 import java.io.IOException;
+import java.lang.reflect.Proxy;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeoutException;
@@ -70,4 +71,11 @@ SCMRatisResponse submitRequest(SCMRatisRequest request)
 
   RaftPeerId getLeaderId();
 
+  default <T> T getProxyHandler(final RequestType type, final Class<T> intf, 
final T impl) {
+    final SCMHAInvocationHandler invocationHandler =
+        new SCMHAInvocationHandler(type, impl, this);
+    return intf.cast(Proxy.newProxyInstance(getClass().getClassLoader(),
+        new Class<?>[] {intf}, invocationHandler));
+  }
+
 }
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java
index 067b296179..c3331ca728 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SequenceIdGenerator.java
@@ -23,7 +23,6 @@
 
 import com.google.common.base.Preconditions;
 import java.io.IOException;
-import java.lang.reflect.Proxy;
 import java.math.BigInteger;
 import java.security.cert.X509Certificate;
 import java.time.LocalDate;
@@ -330,13 +329,7 @@ public StateManager build() {
 
         final StateManager impl = new StateManagerImpl(table, buffer);
 
-        final SCMHAInvocationHandler invocationHandler
-            = new SCMHAInvocationHandler(SEQUENCE_ID, impl, ratisServer);
-
-        return (StateManager) Proxy.newProxyInstance(
-            SCMHAInvocationHandler.class.getClassLoader(),
-            new Class<?>[]{StateManager.class},
-            invocationHandler);
+        return ratisServer.getProxyHandler(SEQUENCE_ID, StateManager.class, 
impl);
       }
     }
   }
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/StatefulServiceStateManagerImpl.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/StatefulServiceStateManagerImpl.java
index be9d4c6667..85973bd10a 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/StatefulServiceStateManagerImpl.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/StatefulServiceStateManagerImpl.java
@@ -20,7 +20,6 @@
 import com.google.common.base.Preconditions;
 import com.google.protobuf.ByteString;
 import java.io.IOException;
-import java.lang.reflect.Proxy;
 import org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol.RequestType;
 import org.apache.hadoop.hdds.scm.metadata.DBTransactionBuffer;
 import org.apache.hadoop.hdds.utils.db.Table;
@@ -135,13 +134,8 @@ public StatefulServiceStateManager build() {
           new StatefulServiceStateManagerImpl(statefulServiceConfig,
               transactionBuffer);
 
-      final SCMHAInvocationHandler invocationHandler =
-          new SCMHAInvocationHandler(RequestType.STATEFUL_SERVICE_CONFIG,
-              stateManager, scmRatisServer);
-
-      return (StatefulServiceStateManager) Proxy.newProxyInstance(
-          SCMHAInvocationHandler.class.getClassLoader(),
-          new Class<?>[]{StatefulServiceStateManager.class}, 
invocationHandler);
+      return 
scmRatisServer.getProxyHandler(RequestType.STATEFUL_SERVICE_CONFIG,
+          StatefulServiceStateManager.class, stateManager);
     }
   }
 }
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineStateManagerImpl.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineStateManagerImpl.java
index 6dc924ea55..89a7b25c72 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineStateManagerImpl.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineStateManagerImpl.java
@@ -19,7 +19,6 @@
 
 import com.google.common.base.Preconditions;
 import java.io.IOException;
-import java.lang.reflect.Proxy;
 import java.util.Collection;
 import java.util.List;
 import java.util.NavigableSet;
@@ -28,9 +27,8 @@
 import org.apache.hadoop.hdds.client.ReplicationConfig;
 import org.apache.hadoop.hdds.protocol.DatanodeDetails;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
-import org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol;
+import org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol.RequestType;
 import org.apache.hadoop.hdds.scm.container.ContainerID;
-import org.apache.hadoop.hdds.scm.ha.SCMHAInvocationHandler;
 import org.apache.hadoop.hdds.scm.ha.SCMRatisServer;
 import org.apache.hadoop.hdds.scm.metadata.DBTransactionBuffer;
 import org.apache.hadoop.hdds.scm.node.NodeManager;
@@ -380,13 +378,8 @@ public PipelineStateManager build() throws IOException {
           new PipelineStateManagerImpl(
               pipelineStore, nodeManager, transactionBuffer);
 
-      final SCMHAInvocationHandler invocationHandler =
-          new SCMHAInvocationHandler(SCMRatisProtocol.RequestType.PIPELINE,
-              pipelineStateManager, scmRatisServer);
-
-      return (PipelineStateManager) Proxy.newProxyInstance(
-          SCMHAInvocationHandler.class.getClassLoader(),
-          new Class<?>[]{PipelineStateManager.class}, invocationHandler);
+      return scmRatisServer.getProxyHandler(RequestType.PIPELINE,
+          PipelineStateManager.class, pipelineStateManager);
     }
   }
 }
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/security/RootCARotationHandlerImpl.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/security/RootCARotationHandlerImpl.java
index ad2e3d388c..d7c4db3c32 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/security/RootCARotationHandlerImpl.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/security/RootCARotationHandlerImpl.java
@@ -23,14 +23,12 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.lang.reflect.Proxy;
 import java.nio.file.Files;
 import java.nio.file.StandardCopyOption;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicReference;
 import org.apache.commons.io.FileUtils;
-import org.apache.hadoop.hdds.scm.ha.SCMHAInvocationHandler;
 import org.apache.hadoop.hdds.scm.ha.SCMRatisServer;
 import org.apache.hadoop.hdds.scm.server.StorageContainerManager;
 import org.apache.hadoop.hdds.security.SecurityConfig;
@@ -230,13 +228,8 @@ public RootCARotationHandler build() {
       final RootCARotationHandler impl =
           new RootCARotationHandlerImpl(scm, rootCARotationManager);
 
-      final SCMHAInvocationHandler invocationHandler
-          = new SCMHAInvocationHandler(CERT_ROTATE, impl, ratisServer);
-
-      return (RootCARotationHandler) Proxy.newProxyInstance(
-          SCMHAInvocationHandler.class.getClassLoader(),
-          new Class<?>[]{RootCARotationHandler.class},
-          invocationHandler);
+      return ratisServer.getProxyHandler(CERT_ROTATE,
+          RootCARotationHandler.class, impl);
     }
   }
 }
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/security/ScmSecretKeyStateBuilder.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/security/ScmSecretKeyStateBuilder.java
index 32d374a2d5..1f643fbc9f 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/security/ScmSecretKeyStateBuilder.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/security/ScmSecretKeyStateBuilder.java
@@ -17,9 +17,7 @@
 
 package org.apache.hadoop.hdds.scm.security;
 
-import java.lang.reflect.Proxy;
 import org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol;
-import org.apache.hadoop.hdds.scm.ha.SCMHAInvocationHandler;
 import org.apache.hadoop.hdds.scm.ha.SCMRatisServer;
 import org.apache.hadoop.hdds.security.symmetric.SecretKeyState;
 import org.apache.hadoop.hdds.security.symmetric.SecretKeyStateImpl;
@@ -47,13 +45,7 @@ public ScmSecretKeyStateBuilder setRatisServer(
 
   public SecretKeyState build() {
     final SecretKeyState impl = new SecretKeyStateImpl(secretKeyStore);
-
-    final SCMHAInvocationHandler scmhaInvocationHandler =
-        new SCMHAInvocationHandler(SCMRatisProtocol.RequestType.SECRET_KEY,
-            impl, scmRatisServer);
-
-    return (SecretKeyState) Proxy.newProxyInstance(
-        SCMHAInvocationHandler.class.getClassLoader(),
-        new Class<?>[]{SecretKeyState.class}, scmhaInvocationHandler);
+    return 
scmRatisServer.getProxyHandler(SCMRatisProtocol.RequestType.SECRET_KEY,
+       SecretKeyState.class, impl);
   }
 }
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMCertStore.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMCertStore.java
index 4484713f18..ad5ae52cb1 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMCertStore.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMCertStore.java
@@ -21,7 +21,6 @@
 
 import com.google.common.base.Preconditions;
 import java.io.IOException;
-import java.lang.reflect.Proxy;
 import java.math.BigInteger;
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
@@ -31,7 +30,6 @@
 import java.util.concurrent.locks.ReentrantLock;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeType;
 import org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol;
-import org.apache.hadoop.hdds.scm.ha.SCMHAInvocationHandler;
 import org.apache.hadoop.hdds.scm.ha.SCMRatisServer;
 import org.apache.hadoop.hdds.scm.metadata.SCMMetadataStore;
 import org.apache.hadoop.hdds.security.exception.SCMSecurityException;
@@ -227,17 +225,9 @@ public Builder setRatisServer(final SCMRatisServer 
ratisServer) {
     }
 
     public CertificateStore build() {
-      final SCMCertStore scmCertStore = new SCMCertStore(metadataStore
-      );
-
-      final SCMHAInvocationHandler scmhaInvocationHandler =
-          new SCMHAInvocationHandler(SCMRatisProtocol.RequestType.CERT_STORE,
-              scmCertStore, scmRatisServer);
-
-      return (CertificateStore) Proxy.newProxyInstance(
-          SCMHAInvocationHandler.class.getClassLoader(),
-          new Class<?>[]{CertificateStore.class}, scmhaInvocationHandler);
-
+      final SCMCertStore scmCertStore = new SCMCertStore(metadataStore);
+      return 
scmRatisServer.getProxyHandler(SCMRatisProtocol.RequestType.CERT_STORE,
+         CertificateStore.class, scmCertStore);
     }
   }
 }
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/FinalizationStateManagerImpl.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/FinalizationStateManagerImpl.java
index 860933c4ae..2cfd1bb2d4 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/FinalizationStateManagerImpl.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/upgrade/FinalizationStateManagerImpl.java
@@ -20,11 +20,9 @@
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import java.io.IOException;
-import java.lang.reflect.Proxy;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 import org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol;
-import org.apache.hadoop.hdds.scm.ha.SCMHAInvocationHandler;
 import org.apache.hadoop.hdds.scm.ha.SCMRatisServer;
 import org.apache.hadoop.hdds.scm.metadata.DBTransactionBuffer;
 import org.apache.hadoop.hdds.scm.metadata.Replicate;
@@ -331,14 +329,9 @@ public FinalizationStateManager build() throws IOException 
{
       Preconditions.checkNotNull(finalizationStore);
       Preconditions.checkNotNull(transactionBuffer);
       Preconditions.checkNotNull(upgradeFinalizer);
-      final SCMHAInvocationHandler invocationHandler =
-          new SCMHAInvocationHandler(SCMRatisProtocol.RequestType.FINALIZE,
-              new FinalizationStateManagerImpl(this),
-              scmRatisServer);
-
-      return (FinalizationStateManager) Proxy.newProxyInstance(
-          SCMHAInvocationHandler.class.getClassLoader(),
-          new Class<?>[]{FinalizationStateManager.class}, invocationHandler);
+
+      return 
scmRatisServer.getProxyHandler(SCMRatisProtocol.RequestType.FINALIZE,
+        FinalizationStateManager.class, new 
FinalizationStateManagerImpl(this));
     }
   }
 }
diff --git 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestReplicationAnnotation.java
 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestReplicationAnnotation.java
index f94d6f50b2..ec113eb1c7 100644
--- 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestReplicationAnnotation.java
+++ 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestReplicationAnnotation.java
@@ -22,7 +22,6 @@
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.io.IOException;
-import java.lang.reflect.Proxy;
 import java.util.List;
 import java.util.UUID;
 import java.util.concurrent.ExecutionException;
@@ -43,7 +42,6 @@
  * Tests on {@link org.apache.hadoop.hdds.scm.metadata.Replicate}.
  */
 public class TestReplicationAnnotation {
-  private SCMHAInvocationHandler scmhaInvocationHandler;
   private SCMRatisServer scmRatisServer;
 
   @BeforeEach
@@ -118,20 +116,16 @@ public GrpcTlsConfig getGrpcTlsConfig() {
       public RaftPeerId getLeaderId() {
         return RaftPeerId.valueOf(UUID.randomUUID().toString());
       }
+
     };
   }
 
   @Test
   public void testReplicateAnnotationBasic() throws Throwable {
 
-    scmhaInvocationHandler = new SCMHAInvocationHandler(
-        RequestType.CONTAINER, null, scmRatisServer);
+    ContainerStateManager proxy = 
scmRatisServer.getProxyHandler(RequestType.CONTAINER,
+        ContainerStateManager.class, null);
 
-    ContainerStateManager proxy =
-        (ContainerStateManager) Proxy.newProxyInstance(
-            SCMHAInvocationHandler.class.getClassLoader(),
-            new Class<?>[]{ContainerStateManager.class},
-            scmhaInvocationHandler);
     IOException e =
         assertThrows(IOException.class,
             () -> 
proxy.addContainer(HddsProtos.ContainerInfoProto.getDefaultInstance()));
diff --git 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMCertStore.java
 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMCertStore.java
index de8cb3dc09..aafa1c689d 100644
--- 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMCertStore.java
+++ 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMCertStore.java
@@ -21,6 +21,11 @@
 import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeType.OM;
 import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeType.SCM;
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.AdditionalAnswers.returnsLastArg;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.math.BigInteger;
 import java.nio.file.Files;
@@ -32,6 +37,8 @@
 import org.apache.hadoop.hdds.HddsConfigKeys;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeType;
+import org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol;
+import org.apache.hadoop.hdds.scm.ha.SCMRatisServer;
 import org.apache.hadoop.hdds.scm.metadata.SCMMetadataStore;
 import org.apache.hadoop.hdds.scm.metadata.SCMMetadataStoreImpl;
 import org.apache.hadoop.hdds.security.SecurityConfig;
@@ -66,8 +73,12 @@ public void setUp(@TempDir Path tempDir) throws Exception {
     securityConfig = new SecurityConfig(config);
     keyPair = KeyStoreTestUtil.generateKeyPair("RSA");
 
+    final SCMRatisServer ratisServer = mock(SCMRatisServer.class);
+    
when(ratisServer.getProxyHandler(eq(SCMRatisProtocol.RequestType.CERT_STORE),
+        eq(CertificateStore.class), any(CertificateStore.class)))
+        .then(returnsLastArg());
     scmMetadataStore = new SCMMetadataStoreImpl(config);
-    scmCertStore = new SCMCertStore.Builder().setRatisServer(null)
+    scmCertStore = new SCMCertStore.Builder().setRatisServer(ratisServer)
         .setMetadaStore(scmMetadataStore)
         .build();
 


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

Reply via email to