From 418737e00c9667fb78504382177d80cb852d690f Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Wed, 12 Feb 2025 18:53:27 +0800 Subject: [PATCH 1/2] Update DualKeyCacheImpl.java Update TableDeviceSchemaCache.java Update DualKeyCacheImpl.java --- .../executor/RegionWriteExecutor.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java index 079238309c75f..2060ed0313b91 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java @@ -85,6 +85,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -661,8 +662,13 @@ private RegionExecutionResult executeInternalCreateMultiTimeSeries( MeasurementGroup measurementGroup; Map failingMeasurementMap; MetadataException metadataException; - for (final Map.Entry> deviceEntry : - node.getDeviceMap().entrySet()) { + + final Iterator>> iterator = + node.getDeviceMap().entrySet().iterator(); + + while (iterator.hasNext()) { + final Map.Entry> deviceEntry = + iterator.next(); measurementGroup = deviceEntry.getValue().right; failingMeasurementMap = schemaRegion.checkMeasurementExistence( @@ -690,10 +696,18 @@ private RegionExecutionResult executeInternalCreateMultiTimeSeries( } } measurementGroup.removeMeasurements(failingMeasurementMap.keySet()); + if (measurementGroup.isEmpty()) { + iterator.remove(); + } } return processExecutionResultOfInternalCreateSchema( - super.visitInternalCreateMultiTimeSeries(node, context), + !node.getDeviceMap().isEmpty() + ? super.visitInternalCreateMultiTimeSeries(node, context) + : RegionExecutionResult.create( + true, + "Execute successfully", + RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS, "Execute successfully")), failingStatus, alreadyExistingStatus); } finally { From 633764be81bf71f131ced80b504327bc46173639 Mon Sep 17 00:00:00 2001 From: Caideyipi <87789683+Caideyipi@users.noreply.github.com> Date: Wed, 12 Feb 2025 21:10:40 +0800 Subject: [PATCH 2/2] Update RegionWriteExecutor.java --- .../execution/executor/RegionWriteExecutor.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java index 2060ed0313b91..e9fac5c1d32a2 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java @@ -486,11 +486,11 @@ private RegionExecutionResult executeCreateMultiTimeSeries( measurementGroupMap.remove(emptyDevice); } - final RegionExecutionResult failingResult = + final RegionExecutionResult executionResult = registerTimeSeries(measurementGroupMap, node, context, failingStatus); - if (failingResult != null) { - return failingResult; + if (executionResult != null) { + return executionResult; } final TSStatus status = RpcUtils.getStatus(failingStatus); @@ -617,7 +617,12 @@ private RegionExecutionResult executeInternalCreateTimeSeries( measurementGroup.removeMeasurements(failingMeasurementMap.keySet()); return processExecutionResultOfInternalCreateSchema( - super.visitInternalCreateTimeSeries(node, context), + !measurementGroup.isEmpty() + ? super.visitInternalCreateTimeSeries(node, context) + : RegionExecutionResult.create( + true, + "Execute successfully", + RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS, "Execute successfully")), failingStatus, alreadyExistingStatus); } finally {