This is an automated email from the ASF dual-hosted git repository.
zyk 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 3fadcfeab8 [IOTDB-3254][IOTDB-3492] Fix storage group related error
message (#6462)
3fadcfeab8 is described below
commit 3fadcfeab864a511fd7beae86f597e21aeaf3c51
Author: Marcos_Zyk <[email protected]>
AuthorDate: Mon Jun 27 22:38:04 2022 +0800
[IOTDB-3254][IOTDB-3492] Fix storage group related error message (#6462)
[IOTDB-3254][IOTDB-3492] Fix storage group related error message (#6462)
---
.../iotdb/confignode/persistence/ClusterSchemaInfo.java | 4 +---
.../db/mpp/plan/analyze/ClusterPartitionFetcher.java | 11 ++++++++++-
.../db/mpp/plan/execution/config/ConfigExecution.java | 15 ++++++++++++++-
.../config/executor/ClusterConfigTaskExecutor.java | 3 ++-
.../db/service/thrift/impl/DataNodeTSIServiceImpl.java | 2 +-
.../org/apache/iotdb/db/utils/ErrorHandlingUtils.java | 6 ++++++
6 files changed, 34 insertions(+), 7 deletions(-)
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ClusterSchemaInfo.java
b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ClusterSchemaInfo.java
index bd292f1061..91dca04457 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ClusterSchemaInfo.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ClusterSchemaInfo.java
@@ -112,9 +112,7 @@ public class ClusterSchemaInfo implements SnapshotProcessor
{
result.setCode(TSStatusCode.SUCCESS_STATUS.getStatusCode());
} catch (MetadataException e) {
LOGGER.error("Error StorageGroup name", e);
- result
- .setCode(TSStatusCode.SET_STORAGE_GROUP_FAILED.getStatusCode())
- .setMessage("Error StorageGroup name");
+ result.setCode(e.getErrorCode()).setMessage(e.getMessage());
} finally {
storageGroupReadWriteLock.writeLock().unlock();
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterPartitionFetcher.java
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterPartitionFetcher.java
index ebfed56211..63bdcfd0c1 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterPartitionFetcher.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterPartitionFetcher.java
@@ -19,10 +19,12 @@
package org.apache.iotdb.db.mpp.plan.analyze;
import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
+import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
import org.apache.iotdb.commons.client.IClientManager;
import org.apache.iotdb.commons.consensus.PartitionRegionId;
+import org.apache.iotdb.commons.exception.IoTDBException;
import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.partition.DataPartition;
import org.apache.iotdb.commons.partition.DataPartitionQueryParam;
@@ -299,11 +301,18 @@ public class ClusterPartitionFetcher implements
IPartitionFetcher {
storageGroupNamesNeedCreated.add(storageGroupNameNeedCreated.getFullPath());
}
}
+ Set<String> successFullyCreatedStorageGroup = new HashSet<>();
for (String storageGroupName : storageGroupNamesNeedCreated) {
TStorageGroupSchema storageGroupSchema = new
TStorageGroupSchema();
storageGroupSchema.setName(storageGroupName);
TSetStorageGroupReq req = new
TSetStorageGroupReq(storageGroupSchema);
- client.setStorageGroup(req);
+ TSStatus tsStatus = client.setStorageGroup(req);
+ if (TSStatusCode.SUCCESS_STATUS.getStatusCode() ==
tsStatus.getCode()) {
+ successFullyCreatedStorageGroup.add(storageGroupName);
+ } else {
+
partitionCache.updateStorageCache(successFullyCreatedStorageGroup);
+ throw new RuntimeException(new
IoTDBException(tsStatus.message, tsStatus.code));
+ }
}
partitionCache.updateStorageCache(storageGroupNamesNeedCreated);
// third try to hit cache
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigExecution.java
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigExecution.java
index a8ebfac6eb..b807d51565 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigExecution.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigExecution.java
@@ -19,6 +19,7 @@
package org.apache.iotdb.db.mpp.plan.execution.config;
+import org.apache.iotdb.commons.exception.IoTDBException;
import org.apache.iotdb.commons.utils.TestOnly;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
@@ -33,6 +34,7 @@ import
org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecuto
import
org.apache.iotdb.db.mpp.plan.execution.config.executor.StandaloneConfigTaskExecutor;
import org.apache.iotdb.db.mpp.plan.statement.Statement;
import org.apache.iotdb.rpc.RpcUtils;
+import org.apache.iotdb.rpc.StatementExecutionException;
import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
@@ -117,7 +119,18 @@ public class ConfigExecution implements IQueryExecution {
public void fail(Throwable cause) {
stateMachine.transitionToFailed(cause);
- taskFuture.set(new ConfigTaskResult(TSStatusCode.INTERNAL_SERVER_ERROR));
+ ConfigTaskResult result;
+ if (cause instanceof IoTDBException) {
+ result =
+ new ConfigTaskResult(TSStatusCode.representOf(((IoTDBException)
cause).getErrorCode()));
+ } else if (cause instanceof StatementExecutionException) {
+ result =
+ new ConfigTaskResult(
+ TSStatusCode.representOf(((StatementExecutionException)
cause).getStatusCode()));
+ } else {
+ result = new ConfigTaskResult(TSStatusCode.INTERNAL_SERVER_ERROR);
+ }
+ taskFuture.set(result);
}
@Override
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
index 93c08bfb40..d4a16138e2 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.common.rpc.thrift.TFlushReq;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.client.IClientManager;
import org.apache.iotdb.commons.consensus.PartitionRegionId;
+import org.apache.iotdb.commons.exception.IoTDBException;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.confignode.rpc.thrift.TClusterNodeInfos;
import org.apache.iotdb.confignode.rpc.thrift.TCountStorageGroupResp;
@@ -103,7 +104,7 @@ public class ClusterConfigTaskExecutor implements
IConfigTaskExecutor {
"Failed to execute set storage group {} in config node, status is
{}.",
setStorageGroupStatement.getStorageGroupPath(),
tsStatus);
- future.setException(new StatementExecutionException(tsStatus));
+ future.setException(new IoTDBException(tsStatus.message,
tsStatus.code));
} else {
future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS));
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeTSIServiceImpl.java
b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeTSIServiceImpl.java
index b035aa05ee..65770b9658 100644
---
a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeTSIServiceImpl.java
+++
b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeTSIServiceImpl.java
@@ -564,7 +564,7 @@ public class DataNodeTSIServiceImpl implements
TSIEventHandler {
if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()
&& result.status.code !=
TSStatusCode.NEED_REDIRECTION.getStatusCode()) {
- throw new RuntimeException("error code: " + result.status);
+ return RpcUtils.getTSExecuteStatementResp(result.status);
}
IQueryExecution queryExecution = COORDINATOR.getQueryExecution(queryId);
diff --git
a/server/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java
b/server/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java
index 1a82376149..4b90e70bfd 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java
@@ -123,6 +123,12 @@ public class ErrorHandlingUtils {
} else if (t instanceof SemanticException) {
return RpcUtils.getStatus(TSStatusCode.SEMANTIC_ERROR,
rootCause.getMessage());
}
+
+ if (t instanceof RuntimeException && rootCause instanceof IoTDBException) {
+ return RpcUtils.getStatus(
+ ((IoTDBException) rootCause).getErrorCode(), rootCause.getMessage());
+ }
+
return null;
}