You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2022/11/28 03:20:00 UTC
[iotdb] 01/01: fix data inserted into incorrect data region
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch fix_split_data_bug
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 0a11a6336e8587eda041c9e4c4deff2f933b4497
Author: HTHou <hh...@outlook.com>
AuthorDate: Mon Nov 28 11:18:33 2022 +0800
fix data inserted into incorrect data region
---
.../org/apache/iotdb/commons/partition/DataPartition.java | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartition.java b/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartition.java
index c9c4514cc5..2d35b2a40b 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartition.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartition.java
@@ -91,10 +91,15 @@ public class DataPartition extends Partition {
TSeriesPartitionSlot seriesPartitionSlot = calculateDeviceGroupId(deviceName);
// IMPORTANT TODO: (xingtanzjr) need to handle the situation for write operation that there are
// more than 1 Regions for one timeSlot
- return dataPartitionMap.get(storageGroup).get(seriesPartitionSlot).entrySet().stream()
- .filter(entry -> timePartitionSlotList.contains(entry.getKey()))
- .flatMap(entry -> entry.getValue().stream())
- .collect(Collectors.toList());
+ List<TRegionReplicaSet> dataRegionReplicaSets = new ArrayList<>();
+ Map<TSeriesPartitionSlot, Map<TTimePartitionSlot, List<TRegionReplicaSet>>>
+ dataBasePartitionMap = dataPartitionMap.get(storageGroup);
+ Map<TTimePartitionSlot, List<TRegionReplicaSet>> slotReplicaSetMap =
+ dataBasePartitionMap.get(seriesPartitionSlot);
+ for (TTimePartitionSlot timePartitionSlot : timePartitionSlotList) {
+ dataRegionReplicaSets.addAll(slotReplicaSetMap.get(timePartitionSlot));
+ }
+ return dataRegionReplicaSets;
}
public TRegionReplicaSet getDataRegionReplicaSetForWriting(