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;