This is an automated email from the ASF dual-hosted git repository.
justinchen pushed a commit to branch err-cli-opti
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/err-cli-opti by this push:
new 85d42df2e3e ut
85d42df2e3e is described below
commit 85d42df2e3eda9b3dc5ae1453ac7de879ea4360b
Author: Caideyipi <[email protected]>
AuthorDate: Tue Jan 6 11:52:55 2026 +0800
ut
---
.../main/java/org/apache/iotdb/rpc/RpcUtils.java | 12 ++++
.../schema/AlterEncodingCompressorProcedure.java | 3 +-
.../schema/AlterTimeSeriesDataTypeProcedure.java | 3 +-
.../impl/schema/DataNodeTSStatusTaskExecutor.java | 5 +-
.../procedure/impl/schema/SchemaUtils.java | 4 +-
.../impl/schema/SetTemplateProcedure.java | 4 +-
.../schema/DataNodeRegionTaskExecutorTest.java | 81 ++++++++++++++++++++++
7 files changed, 106 insertions(+), 6 deletions(-)
diff --git
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/RpcUtils.java
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/RpcUtils.java
index 7541f500e45..7a7c7a5ed44 100644
--- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/RpcUtils.java
+++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/RpcUtils.java
@@ -190,6 +190,18 @@ public class RpcUtils {
return status;
}
+ public static TSStatus extractFailureStatues(final TSStatus input) {
+ return input.getCode() == TSStatusCode.MULTIPLE_ERROR.getStatusCode()
+ ? new TSStatus(input.getCode())
+ .setMessage(input.getMessage())
+ .setSubStatus(
+ input.getSubStatus().stream()
+ .filter(
+ status -> status.getCode() !=
TSStatusCode.SUCCESS_STATUS.getStatusCode())
+ .collect(Collectors.toList()))
+ : input;
+ }
+
/**
* Convert from {@link TSStatusCode} to {@link TSStatus}, which has message
appended with existing
* status message
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterEncodingCompressorProcedure.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterEncodingCompressorProcedure.java
index f0aec5ee32e..e9e257ac254 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterEncodingCompressorProcedure.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterEncodingCompressorProcedure.java
@@ -41,6 +41,7 @@ import
org.apache.iotdb.consensus.exception.ConsensusException;
import org.apache.iotdb.db.exception.metadata.PathNotExistException;
import org.apache.iotdb.mpp.rpc.thrift.TAlterEncodingCompressorReq;
import org.apache.iotdb.pipe.api.exception.PipeException;
+import org.apache.iotdb.rpc.RpcUtils;
import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.utils.ReadWriteIOUtils;
@@ -200,7 +201,7 @@ public class AlterEncodingCompressorProcedure
failedRegionList.addAll(consensusGroupIdList);
}
if (!failedRegionList.isEmpty()) {
- failureMap.put(dataNodeLocation, response);
+ failureMap.put(dataNodeLocation,
RpcUtils.extractFailureStatues(response));
} else {
failureMap.remove(dataNodeLocation);
}
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterTimeSeriesDataTypeProcedure.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterTimeSeriesDataTypeProcedure.java
index 0474ba4df94..ccd83014f64 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterTimeSeriesDataTypeProcedure.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/AlterTimeSeriesDataTypeProcedure.java
@@ -42,6 +42,7 @@ import
org.apache.iotdb.db.exception.metadata.PathNotExistException;
import org.apache.iotdb.mpp.rpc.thrift.TAlterTimeSeriesReq;
import org.apache.iotdb.mpp.rpc.thrift.TInvalidateMatchedSchemaCacheReq;
import org.apache.iotdb.pipe.api.exception.PipeException;
+import org.apache.iotdb.rpc.RpcUtils;
import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.enums.TSDataType;
@@ -218,7 +219,7 @@ public class AlterTimeSeriesDataTypeProcedure
failedRegionList.addAll(consensusGroupIdList);
}
if (!failedRegionList.isEmpty()) {
- failureMap.put(dataNodeLocation, response);
+ failureMap.put(dataNodeLocation,
RpcUtils.extractFailureStatues(response));
} else {
failureMap.remove(dataNodeLocation);
}
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DataNodeTSStatusTaskExecutor.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DataNodeTSStatusTaskExecutor.java
index 4b73478b783..37c93b3941d 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DataNodeTSStatusTaskExecutor.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DataNodeTSStatusTaskExecutor.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.confignode.client.async.CnToDnAsyncRequestType;
import org.apache.iotdb.confignode.procedure.env.ConfigNodeProcedureEnv;
+import org.apache.iotdb.rpc.RpcUtils;
import org.apache.iotdb.rpc.TSStatusCode;
import java.util.ArrayList;
@@ -72,7 +73,7 @@ public abstract class DataNodeTSStatusTaskExecutor<Q>
failedRegionList.addAll(consensusGroupIdList);
}
if (!failedRegionList.isEmpty()) {
- failureMap.put(dataNodeLocation, response);
+ failureMap.put(dataNodeLocation,
RpcUtils.extractFailureStatues(response));
} else {
failureMap.remove(dataNodeLocation);
}
@@ -99,7 +100,7 @@ public abstract class DataNodeTSStatusTaskExecutor<Q>
failedRegionList.addAll(consensusGroupIdList);
}
if (!failedRegionList.isEmpty()) {
- failureMap.put(dataNodeLocation, response);
+ failureMap.put(dataNodeLocation,
RpcUtils.extractFailureStatues(response));
} else {
failureMap.remove(dataNodeLocation);
}
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/SchemaUtils.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/SchemaUtils.java
index 644b8658876..f5dcae9e739 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/SchemaUtils.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/SchemaUtils.java
@@ -43,6 +43,7 @@ import
org.apache.iotdb.mpp.rpc.thrift.TCheckSchemaRegionUsingTemplateResp;
import org.apache.iotdb.mpp.rpc.thrift.TCountPathsUsingTemplateReq;
import org.apache.iotdb.mpp.rpc.thrift.TCountPathsUsingTemplateResp;
import org.apache.iotdb.mpp.rpc.thrift.TUpdateTableReq;
+import org.apache.iotdb.rpc.RpcUtils;
import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.utils.ReadWriteIOUtils;
@@ -197,7 +198,8 @@ public class SchemaUtils {
failedRegionList.addAll(consensusGroupIdList);
}
if (!failedRegionList.isEmpty()) {
- failureMap.put(dataNodeLocation, response.getStatus());
+ failureMap.put(
+ dataNodeLocation,
RpcUtils.extractFailureStatues(response.getStatus()));
} else {
failureMap.remove(dataNodeLocation);
}
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/SetTemplateProcedure.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/SetTemplateProcedure.java
index 95a88ae5349..27ccd77b03a 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/SetTemplateProcedure.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/SetTemplateProcedure.java
@@ -51,6 +51,7 @@ import
org.apache.iotdb.db.schemaengine.template.TemplateInternalRPCUtil;
import org.apache.iotdb.mpp.rpc.thrift.TCheckTimeSeriesExistenceReq;
import org.apache.iotdb.mpp.rpc.thrift.TCheckTimeSeriesExistenceResp;
import org.apache.iotdb.mpp.rpc.thrift.TUpdateTemplateReq;
+import org.apache.iotdb.rpc.RpcUtils;
import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.tsfile.utils.ReadWriteIOUtils;
@@ -310,7 +311,8 @@ public class SetTemplateProcedure
failedRegionList.addAll(consensusGroupIdList);
}
if (!failedRegionList.isEmpty()) {
- failureMap.put(dataNodeLocation, response.getStatus());
+ failureMap.put(
+ dataNodeLocation,
RpcUtils.extractFailureStatues(response.getStatus()));
} else {
failureMap.remove(dataNodeLocation);
}
diff --git
a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/DataNodeRegionTaskExecutorTest.java
b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/DataNodeRegionTaskExecutorTest.java
new file mode 100644
index 00000000000..d1286cc3587
--- /dev/null
+++
b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/schema/DataNodeRegionTaskExecutorTest.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.confignode.procedure.impl.schema;
+
+import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId;
+import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
+import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
+import org.apache.iotdb.common.rpc.thrift.TSStatus;
+import org.apache.iotdb.commons.utils.StatusUtils;
+import org.apache.iotdb.confignode.procedure.env.ConfigNodeProcedureEnv;
+import org.apache.iotdb.rpc.RpcUtils;
+import org.apache.iotdb.rpc.TSStatusCode;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Set;
+
+public class DataNodeRegionTaskExecutorTest {
+
+ @Test
+ public void testPrintFailureMap() {
+ final TestRegionTaskExecutor executor = new TestRegionTaskExecutor();
+ executor.processResponseOfOneDataNode(
+ new TDataNodeLocation().setDataNodeId(0),
+ Collections.singletonList(new
TConsensusGroupId(TConsensusGroupType.DataRegion, 3)),
+ StatusUtils.OK);
+ executor.processResponseOfOneDataNode(
+ new TDataNodeLocation().setDataNodeId(0),
+ Arrays.asList(
+ new TConsensusGroupId(TConsensusGroupType.DataRegion, 1),
+ new TConsensusGroupId(TConsensusGroupType.DataRegion, 2)),
+ RpcUtils.getStatus(
+ Arrays.asList(
+ StatusUtils.OK, new
TSStatus(TSStatusCode.ILLEGAL_PATH.getStatusCode()))));
+ Assert.assertEquals("{DataNodeId: 0=[TSStatus(code:509)]}",
executor.printFailureMap());
+
+ executor.processResponseOfOneDataNodeWithSuccessResult(
+ new TDataNodeLocation().setDataNodeId(0),
+ Arrays.asList(
+ new TConsensusGroupId(TConsensusGroupType.DataRegion, 1),
+ new TConsensusGroupId(TConsensusGroupType.DataRegion, 2)),
+ RpcUtils.getStatus(
+ Arrays.asList(
+ StatusUtils.OK, new
TSStatus(TSStatusCode.ILLEGAL_PATH.getStatusCode()))));
+ Assert.assertTrue(StatusUtils.OK == executor.getSuccessResult().get(0));
+ }
+
+ private static class TestRegionTaskExecutor extends
DataNodeTSStatusTaskExecutor<Void> {
+
+ private TestRegionTaskExecutor() {
+ super(new ConfigNodeProcedureEnv(null, null), null, false, null, null);
+ }
+
+ @Override
+ protected void onAllReplicasetFailure(
+ final TConsensusGroupId consensusGroupId,
+ final Set<TDataNodeLocation> dataNodeLocationSet) {
+ interruptTask();
+ }
+ }
+}