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 b023bb390c [IOTDB-4744] Fix schema register validation bug (#7816)
b023bb390c is described below

commit b023bb390c5a733455edcca69800c7ee2fe6109c
Author: Marcos_Zyk <[email protected]>
AuthorDate: Mon Oct 31 20:12:23 2022 +0800

    [IOTDB-4744] Fix schema register validation bug (#7816)
    
    [IOTDB-4744] Fix schema register validation bug (#7816)
---
 .../db/mpp/execution/executor/RegionWriteExecutor.java   | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/executor/RegionWriteExecutor.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/executor/RegionWriteExecutor.java
index a721400bb7..55edb9c7b5 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/executor/RegionWriteExecutor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/executor/RegionWriteExecutor.java
@@ -69,6 +69,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.stream.Collectors;
 
 public class RegionWriteExecutor {
 
@@ -348,14 +349,17 @@ public class RegionWriteExecutor {
             }
 
             // filter failed measurement and keep the rest for execution
-            for (Map.Entry<Integer, MetadataException> failingMeasurement :
-                failingMeasurementMap.entrySet()) {
-              entry.getValue().removeMeasurement(failingMeasurement.getKey());
-              LOGGER.error("Metadata error: ", failingMeasurement.getValue());
+            List<Integer> failingMeasurementIndexList =
+                
failingMeasurementMap.keySet().stream().sorted().collect(Collectors.toList());
+            int removedNum = 0;
+            for (Integer index : failingMeasurementIndexList) {
+              entry.getValue().removeMeasurement(index - removedNum);
+              removedNum++;
+              LOGGER.error("Metadata error: ", 
failingMeasurementMap.get(index));
               failingStatus.add(
                   RpcUtils.getStatus(
-                      failingMeasurement.getValue().getErrorCode(),
-                      failingMeasurement.getValue().getMessage()));
+                      failingMeasurementMap.get(index).getErrorCode(),
+                      failingMeasurementMap.get(index).getMessage()));
             }
 
             if (entry.getValue().isEmpty()) {

Reply via email to