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

sumitagrawl 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 fb2cc733688 HDDS-16169. Add old updateContainerState to handle upgrade 
path. (#11012)
fb2cc733688 is described below

commit fb2cc733688cff8e73ca78f120dc65dc969f13b1
Author: Ashish Kumar <[email protected]>
AuthorDate: Fri Aug 14 11:10:34 2026 +0530

    HDDS-16169. Add old updateContainerState to handle upgrade path. (#11012)
---
 .../hdds/scm/container/ContainerStateManager.java  |  6 +++++
 .../scm/container/ContainerStateManagerImpl.java   | 30 ++++++++++++++++++++++
 .../ha/invoker/ContainerStateManagerInvoker.java   | 25 +++++++++++++++---
 3 files changed, 58 insertions(+), 3 deletions(-)

diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManager.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManager.java
index 913e1ce84a4..c80996226b5 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManager.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManager.java
@@ -30,6 +30,7 @@
 import org.apache.hadoop.hdds.scm.metadata.Replicate;
 import org.apache.hadoop.hdds.scm.pipeline.PipelineID;
 import org.apache.hadoop.hdds.utils.db.Table;
+import 
org.apache.hadoop.ozone.common.statemachine.InvalidStateTransitionException;
 
 /**
  * A ContainerStateManager is responsible for keeping track of all the
@@ -169,6 +170,11 @@ List<ContainerID> getContainerIDs(LifeCycleState state, 
ContainerHealthState hea
   void addContainer(ContainerInfoProto containerInfo)
       throws IOException;
 
+  @Deprecated
+  @Replicate
+  void updateContainerState(HddsProtos.ContainerID id,
+      HddsProtos.LifeCycleEvent event) throws IOException, 
InvalidStateTransitionException;
+
   /**
    * Updates container state with sequenceId synchronization for HA 
consistency.
    * This method ensures that all SCM nodes have the same sequenceId when 
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 65060c0a171..213f7256d61 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
@@ -386,6 +386,36 @@ public boolean contains(ContainerID id) {
     }
   }
 
+  @Deprecated
+  @Override
+  public void updateContainerState(final HddsProtos.ContainerID containerID,
+      final LifeCycleEvent event)
+      throws IOException, InvalidStateTransitionException {
+    // TODO: Remove the protobuf conversion after fixing ContainerStateMap.
+    final ContainerID id = ContainerID.getFromProtobuf(containerID);
+
+    try (AutoCloseableLock ignored = writeLock(id)) {
+      if (containers.contains(id)) {
+        final ContainerInfo oldInfo = containers.getContainerInfo(id);
+        final LifeCycleState oldState = oldInfo.getState();
+        final LifeCycleState newState = stateMachine.getNextState(
+            oldInfo.getState(), event);
+        if (newState.getNumber() > oldState.getNumber()) {
+          ExecutionUtil.create(() -> {
+            containers.updateState(id, oldState, newState);
+            transactionBuffer.addToBuffer(containerStore, id,
+                containers.getContainerInfo(id));
+          }).onException(() -> {
+            transactionBuffer.addToBuffer(containerStore, id, oldInfo);
+            containers.updateState(id, newState, oldState);
+          }).execute();
+          containerStateChangeActions.getOrDefault(event, info -> { })
+              .accept(oldInfo);
+        }
+      }
+    }
+  }
+
   @Override
   public void updateContainerStateWithSequenceId(final HddsProtos.ContainerID 
containerID,
                                                   final LifeCycleEvent event,
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/invoker/ContainerStateManagerInvoker.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/invoker/ContainerStateManagerInvoker.java
index d5c7be1c8fe..311a5defb71 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/invoker/ContainerStateManagerInvoker.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/invoker/ContainerStateManagerInvoker.java
@@ -35,6 +35,7 @@
 import org.apache.hadoop.hdds.scm.ha.SCMRatisServer;
 import org.apache.hadoop.hdds.scm.pipeline.PipelineID;
 import org.apache.hadoop.hdds.utils.db.Table;
+import 
org.apache.hadoop.ozone.common.statemachine.InvalidStateTransitionException;
 import org.apache.ratis.protocol.Message;
 
 /** Code generated for {@link ContainerStateManager}.  Do not modify. */
@@ -57,6 +58,11 @@ enum ReplicateMethod implements NameAndParameterTypes {
         null,
         new Class<?>[] {ContainerInfoProto.class}
     }),
+    updateContainerState(new Class<?>[][] {
+        null,
+        null,
+        new Class<?>[] {HddsProtos.ContainerID.class, LifeCycleEvent.class}
+    }),
     updateContainerStateWithSequenceId(new Class<?>[][] {
         null,
         null,
@@ -179,6 +185,13 @@ public void updateContainerReplica(ContainerReplica arg0) {
         invoker.getImpl().updateContainerReplica(arg0);
       }
 
+      @Override
+      public void updateContainerState(HddsProtos.ContainerID arg0, 
LifeCycleEvent arg1) throws IOException,
+          InvalidStateTransitionException {
+        final Object[] args = {arg0, arg1};
+        invoker.invokeReplicateDirect(ReplicateMethod.updateContainerState, 
args);
+      }
+
       @Override
       public void updateContainerStateWithSequenceId(HddsProtos.ContainerID 
arg0, LifeCycleEvent arg1, Long arg2) throws
           IOException {
@@ -303,11 +316,17 @@ public Message invokeLocal(String methodName, Object[] p) 
throws Exception {
       getImpl().updateContainerReplica(arg26);
       return Message.EMPTY;
 
-    case "updateContainerStateWithSequenceId":
+    case "updateContainerState":
       final HddsProtos.ContainerID arg27 = p.length > 0 ? 
(HddsProtos.ContainerID) p[0] : null;
       final LifeCycleEvent arg28 = p.length > 1 ? (LifeCycleEvent) p[1] : null;
-      final Long arg29 = p.length > 2 ? (Long) p[2] : null;
-      getImpl().updateContainerStateWithSequenceId(arg27, arg28, arg29);
+      getImpl().updateContainerState(arg27, arg28);
+      return Message.EMPTY;
+
+    case "updateContainerStateWithSequenceId":
+      final HddsProtos.ContainerID arg29 = p.length > 0 ? 
(HddsProtos.ContainerID) p[0] : null;
+      final LifeCycleEvent arg30 = p.length > 1 ? (LifeCycleEvent) p[1] : null;
+      final Long arg31 = p.length > 2 ? (Long) p[2] : null;
+      getImpl().updateContainerStateWithSequenceId(arg29, arg30, arg31);
       return Message.EMPTY;
 
     default:


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

Reply via email to