You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by si...@apache.org on 2026/10/21 03:16:14 UTC
(ozone) 02/02: HDDS-16169. Add old updateContainerState to handle upgrade path. (#11012)
This is an automated email from the ASF dual-hosted git repository.
smengcl pushed a commit to branch ozone-2.1
in repository https://gitbox.apache.org/repos/asf/ozone.git
commit 914737067d4b4153f779cca0fb931b881308450e
Author: Ashish Kumar <11...@users.noreply.github.com>
AuthorDate: Fri Aug 14 11:10:34 2026 +0530
HDDS-16169. Add old updateContainerState to handle upgrade path. (#11012)
(cherry picked from commit fb2cc733688cff8e73ca78f120dc65dc969f13b1)
Conflicts:
hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManager.java
hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerStateManagerImpl.java
hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/invoker/ContainerStateManagerInvoker.java
ozone-2.1 dispatches replicated calls by reflection and has no
ContainerStateManagerInvoker, so that part does not apply. The restored
updateContainerState is the ozone-2.1 version, which already catches
InvalidStateTransitionException (HDDS-15578).
---
.../hdds/scm/container/ContainerStateManager.java | 6 ++++
.../scm/container/ContainerStateManagerImpl.java | 33 ++++++++++++++++++++++
2 files changed, 39 insertions(+)
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 d212d1d400c..2e85544d95c 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
@@ -158,6 +158,12 @@ public interface ContainerStateManager {
void addContainer(ContainerInfoProto containerInfo)
throws IOException;
+ @Deprecated
+ @Replicate
+ void updateContainerState(HddsProtos.ContainerID id,
+ HddsProtos.LifeCycleEvent event)
+ throws IOException;
+
/**
* 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 68516f36c99..ff45f47ba1e 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
@@ -352,6 +352,39 @@ public boolean contains(ContainerID id) {
}
}
+ @Deprecated
+ @Override
+ public void updateContainerState(final HddsProtos.ContainerID containerID,
+ final LifeCycleEvent event)
+ throws IOException {
+ // 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);
+ }
+ }
+ } catch (InvalidStateTransitionException e) {
+ LOG.warn("Failed to updateContainerState for container {}, ignoring it.",
+ id, e);
+ }
+ }
+
@Override
public void updateContainerStateWithSequenceId(final HddsProtos.ContainerID containerID,
final LifeCycleEvent event,
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org