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

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


The following commit(s) were added to refs/heads/master by this push:
     new fb2cb7a394b Fix state setting of AbstractOperatePipeProcedureV2 & 
Enhance state checking of StateMachineProcedure #14959
fb2cb7a394b is described below

commit fb2cb7a394be50c7337e68bdc3838a0062ea3769
Author: Li Yu Heng <[email protected]>
AuthorDate: Wed Feb 26 18:17:59 2025 +0800

    Fix state setting of AbstractOperatePipeProcedureV2 & Enhance state 
checking of StateMachineProcedure #14959
---
 .../iotdb/confignode/procedure/impl/StateMachineProcedure.java   | 9 ++++++---
 .../procedure/impl/pipe/AbstractOperatePipeProcedureV2.java      | 2 ++
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/StateMachineProcedure.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/StateMachineProcedure.java
index 1a925b77fc0..edd8d7f69e5 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/StateMachineProcedure.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/StateMachineProcedure.java
@@ -183,12 +183,15 @@ public abstract class StateMachineProcedure<Env, TState> 
extends Procedure<Env>
     if (Flow.HAS_MORE_STATE == stateFlow) {
       if (nextState == NO_NEXT_STATE) {
         LOG.error(
-            "StateMachineProcedure pid={} not set next state, but return 
HAS_MORE_STATE",
-            getProcId());
+            "StateMachineProcedure pid={} not set next state, but return 
HAS_MORE_STATE. It is likely that there is some problem with the code. Please 
check the code. This procedure is about to be terminated: {}",
+            getProcId(),
+            this);
+        stateFlow = Flow.NO_MORE_STATE;
       } else {
         stateToBeAdded = nextState;
       }
-    } else {
+    }
+    if (Flow.NO_MORE_STATE == stateFlow) {
       if (nextState != NO_NEXT_STATE) {
         LOG.warn(
             "StateMachineProcedure pid={} set next state to {}, but return 
NO_MORE_STATE",
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/AbstractOperatePipeProcedureV2.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/AbstractOperatePipeProcedureV2.java
index 80bc77db2ab..b582955e0b0 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/AbstractOperatePipeProcedureV2.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/AbstractOperatePipeProcedureV2.java
@@ -270,6 +270,7 @@ public abstract class AbstractOperatePipeProcedureV2
             getCycles() + 1,
             RETRY_THRESHOLD,
             e);
+        setNextState(getCurrentState());
         // Wait 3s for next retry
         TimeUnit.MILLISECONDS.sleep(3000L);
       } else {
@@ -285,6 +286,7 @@ public abstract class AbstractOperatePipeProcedureV2
                 String.format(
                     "ProcedureId %s: Fail to %s because %s",
                     getProcId(), getOperation().name(), e.getMessage())));
+        return Flow.NO_MORE_STATE;
       }
     }
     return Flow.HAS_MORE_STATE;

Reply via email to