This is an automated email from the ASF dual-hosted git repository.
qiaojialin 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 c6ce7922ee [IOTDB-4349] Remove error status in data node (#7250)
c6ce7922ee is described below
commit c6ce7922eed208e6f58c12c1d960eb6c58ef3c77
Author: Alan Choo <[email protected]>
AuthorDate: Wed Sep 7 10:22:33 2022 +0800
[IOTDB-4349] Remove error status in data node (#7250)
---
.../org/apache/iotdb/db/qp/sql/IdentifierParser.g4 | 1 -
.../antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 | 2 +-
.../main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4 | 4 ----
.../confignode/manager/load/balancer/RouteBalancer.java | 5 +----
docs/UserGuide/Maintenance-Tools/Maintenance-Command.md | 6 +++---
.../UserGuide/Maintenance-Tools/Maintenance-Command.md | 6 +++---
.../org/apache/iotdb/commons/cluster/NodeStatus.java | 8 +-------
.../org/apache/iotdb/commons/conf/CommonConfig.java | 10 +++++-----
.../iotdb/commons/enums/HandleSystemErrorStrategy.java | 17 +++++------------
.../assembly/resources/conf/iotdb-datanode.properties | 7 +++----
.../apache/iotdb/db/engine/storagegroup/DataRegion.java | 2 +-
.../iotdb/db/engine/storagegroup/TsFileProcessor.java | 5 ++---
.../apache/iotdb/db/metadata/logfile/MLogWriter.java | 3 +--
.../org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java | 2 --
.../org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java | 2 --
.../java/org/apache/iotdb/db/wal/buffer/WALBuffer.java | 7 +++----
.../iotdb/db/wal/checkpoint/CheckpointManager.java | 5 ++---
17 files changed, 31 insertions(+), 61 deletions(-)
diff --git
a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IdentifierParser.g4
b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IdentifierParser.g4
index 6a649b840f..d0052decd8 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IdentifierParser.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IdentifierParser.g4
@@ -130,7 +130,6 @@ keyWords
| QUERY
| RUNNING
| READONLY
- | ERROR
| REGEXP
| REGIONS
| REMOVE
diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
index 6a141ce128..28851aee49 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
@@ -649,7 +649,7 @@ explain
// Set System To readonly/running/error
setSystemStatus
- : SET SYSTEM TO (READONLY|RUNNING|ERROR) (ON (LOCAL | CLUSTER))?
+ : SET SYSTEM TO (READONLY|RUNNING) (ON (LOCAL | CLUSTER))?
;
// Show Version
diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
index 10bb58e1cc..b30831d671 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
@@ -435,10 +435,6 @@ READONLY
: R E A D O N L Y
;
-ERROR
- : E R R O R
- ;
-
REGEXP
: R E G E X P
;
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RouteBalancer.java
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RouteBalancer.java
index 5dde65f600..4c951a8dc8 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RouteBalancer.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RouteBalancer.java
@@ -100,10 +100,7 @@ public class RouteBalancer {
lazyGreedyRouter.updateDisabledDataNodes(
getNodeManager()
.filterDataNodeThroughStatus(
- NodeStatus.Unknown,
- NodeStatus.Removing,
- NodeStatus.Error,
- NodeStatus.ReadOnly));
+ NodeStatus.Unknown, NodeStatus.Removing,
NodeStatus.ReadOnly));
return lazyGreedyRouter;
} else if (LEADER_POLICY.equals(policy)) {
return new LeaderRouter(
diff --git a/docs/UserGuide/Maintenance-Tools/Maintenance-Command.md
b/docs/UserGuide/Maintenance-Tools/Maintenance-Command.md
index 6c86cbcf6a..576be61509 100644
--- a/docs/UserGuide/Maintenance-Tools/Maintenance-Command.md
+++ b/docs/UserGuide/Maintenance-Tools/Maintenance-Command.md
@@ -67,14 +67,14 @@ IoTDB> CLEAR CACHE ON CLUSTER
```
-## SET SYSTEM TO READONLY / RUNNING / ERROR
+## SET SYSTEM TO READONLY / RUNNING
-Manually set IoTDB system to running, read-only, error mode. In cluster mode,
we provide commands to set the local node status and set the cluster status,
valid for the entire cluster by default.
+Manually set IoTDB system to running, read-only mode. In cluster mode, we
provide commands to set the local node status and set the cluster status, valid
for the entire cluster by default.
```sql
IoTDB> SET SYSTEM TO RUNNING
IoTDB> SET SYSTEM TO READONLY ON LOCAL
-IoTDB> SET SYSTEM TO ERROR ON CLUSTER
+IoTDB> SET SYSTEM TO READONLY ON CLUSTER
```
diff --git a/docs/zh/UserGuide/Maintenance-Tools/Maintenance-Command.md
b/docs/zh/UserGuide/Maintenance-Tools/Maintenance-Command.md
index e6a30d03af..7b5f8dc4e1 100644
--- a/docs/zh/UserGuide/Maintenance-Tools/Maintenance-Command.md
+++ b/docs/zh/UserGuide/Maintenance-Tools/Maintenance-Command.md
@@ -67,14 +67,14 @@ IoTDB> CLEAR CACHE ON CLUSTER
```
-## SET SYSTEM TO READONLY / RUNNING / ERROR
+## SET SYSTEM TO READONLY / RUNNING
-手动设置系统为正常运行、只读、错误状态。在集群模式下,我们提供了设置本节点状态、设置整个集群状态的命令,默认对整个集群生效。
+手动设置系统为正常运行、只读状态。在集群模式下,我们提供了设置本节点状态、设置整个集群状态的命令,默认对整个集群生效。
```sql
IoTDB> SET SYSTEM TO RUNNING
IoTDB> SET SYSTEM TO READONLY ON LOCAL
-IoTDB> SET SYSTEM TO ERROR ON CLUSTER
+IoTDB> SET SYSTEM TO READONLY ON CLUSTER
```
## 超时
diff --git
a/node-commons/src/main/java/org/apache/iotdb/commons/cluster/NodeStatus.java
b/node-commons/src/main/java/org/apache/iotdb/commons/cluster/NodeStatus.java
index 182aebe79f..a75f25a123 100644
---
a/node-commons/src/main/java/org/apache/iotdb/commons/cluster/NodeStatus.java
+++
b/node-commons/src/main/java/org/apache/iotdb/commons/cluster/NodeStatus.java
@@ -30,13 +30,7 @@ public enum NodeStatus {
Removing("Removing"),
/** Only query statements are permitted */
- ReadOnly("ReadOnly"),
-
- /**
- * Unrecoverable errors occur, system will be read-only or exit according to
the param
- * allow_read_only_when_errors_occur
- */
- Error("Error");
+ ReadOnly("ReadOnly");
private final String status;
diff --git
a/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
b/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
index 2ec5f03d47..3f0a9fd8ca 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
@@ -256,22 +256,22 @@ public class CommonConfig {
}
public boolean isReadOnly() {
- return status == NodeStatus.ReadOnly
- || (status == NodeStatus.Error
- && handleSystemErrorStrategy ==
HandleSystemErrorStrategy.CHANGE_TO_READ_ONLY);
+ return status == NodeStatus.ReadOnly;
}
public NodeStatus getNodeStatus() {
return status;
}
+ public void handleUnrecoverableError() {
+ handleSystemErrorStrategy.handle();
+ }
+
public void setNodeStatus(NodeStatus newStatus) {
if (newStatus == NodeStatus.ReadOnly) {
logger.error(
"Change system status to read-only! Only query statements are
permitted!",
new RuntimeException("System mode is set to READ_ONLY"));
- } else if (newStatus == NodeStatus.Error) {
- newStatus = handleSystemErrorStrategy.handle();
} else {
logger.info("Set system mode from {} to {}.", status, newStatus);
}
diff --git
a/node-commons/src/main/java/org/apache/iotdb/commons/enums/HandleSystemErrorStrategy.java
b/node-commons/src/main/java/org/apache/iotdb/commons/enums/HandleSystemErrorStrategy.java
index af74edf982..c176826c06 100644
---
a/node-commons/src/main/java/org/apache/iotdb/commons/enums/HandleSystemErrorStrategy.java
+++
b/node-commons/src/main/java/org/apache/iotdb/commons/enums/HandleSystemErrorStrategy.java
@@ -19,13 +19,12 @@
package org.apache.iotdb.commons.enums;
import org.apache.iotdb.commons.cluster.NodeStatus;
+import org.apache.iotdb.commons.conf.CommonDescriptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public enum HandleSystemErrorStrategy {
- /** just set system status to error and then do nothing else */
- NONE,
/** set system status to read-only and the system only accepts query
operations */
CHANGE_TO_READ_ONLY,
/** the system will be shutdown */
@@ -33,23 +32,17 @@ public enum HandleSystemErrorStrategy {
private static final Logger logger =
LoggerFactory.getLogger(HandleSystemErrorStrategy.class);
- public NodeStatus handle() {
- NodeStatus status = NodeStatus.Error;
- if (this == HandleSystemErrorStrategy.NONE) {
- logger.error(
- "Unrecoverable error occurs! Just change system status to error
because handle_system_error is NONE.",
- new RuntimeException("System mode is set to ERROR"));
- } else if (this == HandleSystemErrorStrategy.CHANGE_TO_READ_ONLY) {
+ public void handle() {
+ if (this == HandleSystemErrorStrategy.CHANGE_TO_READ_ONLY) {
logger.error(
"Unrecoverable error occurs! Change system status to read-only
because handle_system_error is CHANGE_TO_READ_ONLY. Only query statements are
permitted!",
new RuntimeException("System mode is set to READ_ONLY"));
- status = NodeStatus.ReadOnly;
+
CommonDescriptor.getInstance().getConfig().setNodeStatus(NodeStatus.ReadOnly);
} else if (this == HandleSystemErrorStrategy.SHUTDOWN) {
logger.error(
"Unrecoverable error occurs! Shutdown system directly because
handle_system_error is SHUTDOWN.",
- new RuntimeException("System mode is set to ERROR"));
+ new RuntimeException("Unrecoverable error occurs! Shutdown system
directly."));
System.exit(-1);
}
- return status;
}
}
diff --git a/server/src/assembly/resources/conf/iotdb-datanode.properties
b/server/src/assembly/resources/conf/iotdb-datanode.properties
index 9322914906..a094e38433 100644
--- a/server/src/assembly/resources/conf/iotdb-datanode.properties
+++ b/server/src/assembly/resources/conf/iotdb-datanode.properties
@@ -318,10 +318,9 @@ timestamp_precision=ms
# What will the system do when unrecoverable error occurs.
# Datatype: String
-# Three strategies are as follows:
-# 1. NONE: just set system status to error and then do nothing else.
-# 2. CHANGE_TO_READ_ONLY: set system status to read-only and the system only
accepts query operations.
-# 3. SHUTDOWN: the system will be shutdown.
+# Optional strategies are as follows:
+# 1. CHANGE_TO_READ_ONLY: set system status to read-only and the system only
accepts query operations.
+# 2. SHUTDOWN: the system will be shutdown.
# handle_system_error=CHANGE_TO_READ_ONLY
# Size of log buffer in each metadata operation plan(in byte).
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
index 7f959fb3fa..18093dec11 100755
---
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
@@ -1490,7 +1490,7 @@ public class DataRegion {
} else {
logger.error(
"meet IOException when creating TsFileProcessor, change system
mode to error", e);
-
CommonDescriptor.getInstance().getConfig().setNodeStatus(NodeStatus.Error);
+
CommonDescriptor.getInstance().getConfig().handleUnrecoverableError();
break;
}
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
index 605cc979db..44943733e6 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
@@ -19,7 +19,6 @@
package org.apache.iotdb.db.engine.storagegroup;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.cluster.NodeStatus;
import org.apache.iotdb.commons.conf.CommonDescriptor;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.exception.MetadataException;
@@ -1246,7 +1245,7 @@ public class TsFileProcessor {
storageGroupName,
tsFileResource.getTsFile().getName(),
e);
-
CommonDescriptor.getInstance().getConfig().setNodeStatus(NodeStatus.Error);
+
CommonDescriptor.getInstance().getConfig().handleUnrecoverableError();
try {
logger.error(
"{}: {} IOTask meets error, truncate the corrupted data",
@@ -1376,7 +1375,7 @@ public class TsFileProcessor {
storageGroupName,
tsFileResource.getTsFile().getAbsolutePath(),
e);
-
CommonDescriptor.getInstance().getConfig().setNodeStatus(NodeStatus.Error);
+
CommonDescriptor.getInstance().getConfig().handleUnrecoverableError();
break;
}
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogWriter.java
b/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogWriter.java
index b2f1a41d9c..b335a338d4 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogWriter.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogWriter.java
@@ -18,7 +18,6 @@
*/
package org.apache.iotdb.db.metadata.logfile;
-import org.apache.iotdb.commons.cluster.NodeStatus;
import org.apache.iotdb.commons.conf.CommonDescriptor;
import org.apache.iotdb.commons.file.SystemFileFactory;
import org.apache.iotdb.commons.path.PartialPath;
@@ -125,7 +124,7 @@ public class MLogWriter implements AutoCloseable {
} else {
logger.error(
"MLog {} sync failed, change system mode to error",
logFile.getAbsoluteFile(), e);
-
CommonDescriptor.getInstance().getConfig().setNodeStatus(NodeStatus.Error);
+
CommonDescriptor.getInstance().getConfig().handleUnrecoverableError();
break;
}
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
index 143c6d315d..6420fc7999 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
@@ -2486,8 +2486,6 @@ public class ASTVisitor extends
IoTDBSqlParserBaseVisitor<Statement> {
setSystemStatusStatement.setStatus(NodeStatus.Running);
} else if (ctx.READONLY() != null) {
setSystemStatusStatement.setStatus(NodeStatus.ReadOnly);
- } else if (ctx.ERROR() != null) {
- setSystemStatusStatement.setStatus(NodeStatus.Error);
} else {
throw new RuntimeException("Unknown system status in set system
command.");
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
index ad1797e026..0551aec282 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
@@ -2246,8 +2246,6 @@ public class IoTDBSqlVisitor extends
IoTDBSqlParserBaseVisitor<Operator> {
return new SetSystemModeOperator(SQLConstant.TOK_SET_SYSTEM_MODE,
NodeStatus.Running);
} else if (ctx.READONLY() != null) {
return new SetSystemModeOperator(SQLConstant.TOK_SET_SYSTEM_MODE,
NodeStatus.ReadOnly);
- } else if (ctx.ERROR() != null) {
- return new SetSystemModeOperator(SQLConstant.TOK_SET_SYSTEM_MODE,
NodeStatus.Error);
} else {
throw new RuntimeException("Unknown system status in set system
command.");
}
diff --git a/server/src/main/java/org/apache/iotdb/db/wal/buffer/WALBuffer.java
b/server/src/main/java/org/apache/iotdb/db/wal/buffer/WALBuffer.java
index 7e3b811148..43eab11225 100644
--- a/server/src/main/java/org/apache/iotdb/db/wal/buffer/WALBuffer.java
+++ b/server/src/main/java/org/apache/iotdb/db/wal/buffer/WALBuffer.java
@@ -18,7 +18,6 @@
*/
package org.apache.iotdb.db.wal.buffer;
-import org.apache.iotdb.commons.cluster.NodeStatus;
import org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory;
import org.apache.iotdb.commons.concurrent.ThreadName;
import org.apache.iotdb.commons.conf.CommonDescriptor;
@@ -426,7 +425,7 @@ public class WALBuffer extends AbstractWALBuffer {
} catch (Throwable e) {
logger.error(
"Fail to sync wal node-{}'s buffer, change system mode to error.",
identifier, e);
-
CommonDescriptor.getInstance().getConfig().setNodeStatus(NodeStatus.Error);
+ CommonDescriptor.getInstance().getConfig().handleUnrecoverableError();
} finally {
switchSyncingBufferToIdle();
}
@@ -447,7 +446,7 @@ public class WALBuffer extends AbstractWALBuffer {
if (info.rollWALFileWriterListener != null) {
info.rollWALFileWriterListener.fail(e);
}
-
CommonDescriptor.getInstance().getConfig().setNodeStatus(NodeStatus.Error);
+
CommonDescriptor.getInstance().getConfig().handleUnrecoverableError();
}
} else if (forceFlag) { // force os cache to the storage device, avoid
force twice by judging
// after rolling file
@@ -462,7 +461,7 @@ public class WALBuffer extends AbstractWALBuffer {
for (WALFlushListener fsyncListener : info.fsyncListeners) {
fsyncListener.fail(e);
}
-
CommonDescriptor.getInstance().getConfig().setNodeStatus(NodeStatus.Error);
+
CommonDescriptor.getInstance().getConfig().handleUnrecoverableError();
}
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/wal/checkpoint/CheckpointManager.java
b/server/src/main/java/org/apache/iotdb/db/wal/checkpoint/CheckpointManager.java
index 23eac301b1..020576f9c4 100644
---
a/server/src/main/java/org/apache/iotdb/db/wal/checkpoint/CheckpointManager.java
+++
b/server/src/main/java/org/apache/iotdb/db/wal/checkpoint/CheckpointManager.java
@@ -18,7 +18,6 @@
*/
package org.apache.iotdb.db.wal.checkpoint;
-import org.apache.iotdb.commons.cluster.NodeStatus;
import org.apache.iotdb.commons.conf.CommonDescriptor;
import org.apache.iotdb.commons.file.SystemFileFactory;
import org.apache.iotdb.db.conf.IoTDBConfig;
@@ -175,7 +174,7 @@ public class CheckpointManager implements AutoCloseable {
"Fail to fsync wal node-{}'s checkpoint writer, change system mode
to error.",
identifier,
e);
-
CommonDescriptor.getInstance().getConfig().setNodeStatus(NodeStatus.Error);
+ CommonDescriptor.getInstance().getConfig().handleUnrecoverableError();
}
try {
@@ -194,7 +193,7 @@ public class CheckpointManager implements AutoCloseable {
"Fail to roll wal node-{}'s checkpoint writer, change system mode
to error.",
identifier,
e);
-
CommonDescriptor.getInstance().getConfig().setNodeStatus(NodeStatus.Error);
+ CommonDescriptor.getInstance().getConfig().handleUnrecoverableError();
}
} finally {
infoLock.unlock();