This is an automated email from the ASF dual-hosted git repository.

yongzao pushed a commit to branch time-precision
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/time-precision by this push:
     new 3a16e0c4fd6 resolve conversation
3a16e0c4fd6 is described below

commit 3a16e0c4fd6dd6f9d05a10121e31d99e98d62e75
Author: YongzaoDan <[email protected]>
AuthorDate: Mon Nov 6 21:17:36 2023 +0800

    resolve conversation
---
 .../write/region/CreateRegionGroupsPlan.java       | 39 +++++++++-------------
 .../manager/load/balancer/RegionBalancer.java      |  4 +--
 .../partition/DatabasePartitionTable.java          | 10 ++----
 .../persistence/partition/PartitionInfo.java       |  2 +-
 .../statemachine/CreateRegionGroupsProcedure.java  |  7 ++--
 .../request/ConfigPhysicalPlanSerDeTest.java       | 18 +++++-----
 .../confignode/persistence/PartitionInfoTest.java  | 16 ++++-----
 .../impl/CreateRegionGroupsProcedureTest.java      | 13 ++++----
 8 files changed, 47 insertions(+), 62 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/region/CreateRegionGroupsPlan.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/region/CreateRegionGroupsPlan.java
index d2d88d39ad9..8ef18502982 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/region/CreateRegionGroupsPlan.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/region/CreateRegionGroupsPlan.java
@@ -19,10 +19,10 @@
 
 package org.apache.iotdb.confignode.consensus.request.write.region;
 
-import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId;
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.commons.utils.BasicStructureSerDeUtil;
+import org.apache.iotdb.commons.utils.CommonDateTimeUtils;
 import org.apache.iotdb.commons.utils.ThriftCommonsSerDeUtils;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
 import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
@@ -43,35 +43,36 @@ import java.util.stream.Collectors;
 /** Create regions for specified Databases. */
 public class CreateRegionGroupsPlan extends ConfigPhysicalPlan {
 
+  protected long createTime;
   // Map<Database, List<TRegionReplicaSet>>
   protected final Map<String, List<TRegionReplicaSet>> regionGroupMap;
-  protected final Map<TConsensusGroupId, Long> regionGroupCreateTimeMap;
 
   public CreateRegionGroupsPlan() {
     super(ConfigPhysicalPlanType.CreateRegionGroups);
     this.regionGroupMap = new HashMap<>();
-    this.regionGroupCreateTimeMap = new HashMap<>();
   }
 
   public CreateRegionGroupsPlan(ConfigPhysicalPlanType type) {
     super(type);
     this.regionGroupMap = new HashMap<>();
-    this.regionGroupCreateTimeMap = new HashMap<>();
   }
 
   public Map<String, List<TRegionReplicaSet>> getRegionGroupMap() {
     return regionGroupMap;
   }
 
-  public Map<TConsensusGroupId, Long> getRegionGroupCreateTimeMap() {
-    return regionGroupCreateTimeMap;
+  public long getCreateTime() {
+    return createTime;
   }
 
-  public void addRegionGroup(String database, TRegionReplicaSet 
regionReplicaSet, long createTime) {
+  public void setCreateTime(long createTime) {
+    this.createTime = createTime;
+  }
+
+  public void addRegionGroup(String database, TRegionReplicaSet 
regionReplicaSet) {
     regionGroupMap
         .computeIfAbsent(database, regionReplicaSets -> new ArrayList<>())
         .add(regionReplicaSet);
-    regionGroupCreateTimeMap.put(regionReplicaSet.getRegionId(), createTime);
   }
 
   public void planLog(Logger logger) {
@@ -114,13 +115,7 @@ public class CreateRegionGroupsPlan extends 
ConfigPhysicalPlan {
               
ThriftCommonsSerDeUtils.serializeTRegionReplicaSet(regionReplicaSet, stream));
     }
 
-    stream.writeInt(regionGroupCreateTimeMap.size());
-    for (Entry<TConsensusGroupId, Long> entry : 
regionGroupCreateTimeMap.entrySet()) {
-      TConsensusGroupId regionId = entry.getKey();
-      long createTime = entry.getValue();
-      ThriftCommonsSerDeUtils.serializeTConsensusGroupId(regionId, stream);
-      stream.writeLong(createTime);
-    }
+    stream.writeLong(createTime);
   }
 
   @Override
@@ -140,12 +135,9 @@ public class CreateRegionGroupsPlan extends 
ConfigPhysicalPlan {
 
     if (buffer.hasRemaining()) {
       // For compatibility
-      int regionGroupCreateTimeMapSize = buffer.getInt();
-      for (int i = 0; i < regionGroupCreateTimeMapSize; i++) {
-        TConsensusGroupId regionId = 
ThriftCommonsSerDeUtils.deserializeTConsensusGroupId(buffer);
-        long createTime = buffer.getLong();
-        regionGroupCreateTimeMap.put(regionId, createTime);
-      }
+      createTime = buffer.getLong();
+    } else {
+      createTime = CommonDateTimeUtils.currentTime();
     }
   }
 
@@ -161,12 +153,11 @@ public class CreateRegionGroupsPlan extends 
ConfigPhysicalPlan {
       return false;
     }
     CreateRegionGroupsPlan that = (CreateRegionGroupsPlan) o;
-    return Objects.equals(regionGroupMap, that.regionGroupMap)
-        && Objects.equals(regionGroupCreateTimeMap, 
that.regionGroupCreateTimeMap);
+    return createTime == that.createTime && Objects.equals(regionGroupMap, 
that.regionGroupMap);
   }
 
   @Override
   public int hashCode() {
-    return Objects.hash(super.hashCode(), regionGroupMap, 
regionGroupCreateTimeMap);
+    return Objects.hash(super.hashCode(), createTime, regionGroupMap);
   }
 }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RegionBalancer.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RegionBalancer.java
index eb801ba1525..dc2c70fc003 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RegionBalancer.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RegionBalancer.java
@@ -23,7 +23,6 @@ import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
 import org.apache.iotdb.common.rpc.thrift.TDataNodeConfiguration;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.commons.cluster.NodeStatus;
-import org.apache.iotdb.commons.utils.CommonDateTimeUtils;
 import org.apache.iotdb.confignode.conf.ConfigNodeDescriptor;
 import 
org.apache.iotdb.confignode.consensus.request.write.region.CreateRegionGroupsPlan;
 import org.apache.iotdb.confignode.exception.DatabaseNotExistsException;
@@ -120,8 +119,7 @@ public class RegionBalancer {
                 replicationFactor,
                 new TConsensusGroupId(
                     consensusGroupType, 
getPartitionManager().generateNextRegionGroupId()));
-        createRegionGroupsPlan.addRegionGroup(
-            database, newRegionGroup, CommonDateTimeUtils.currentTime());
+        createRegionGroupsPlan.addRegionGroup(database, newRegionGroup);
 
         // Mark the new RegionGroup as allocated
         allocatedRegionGroups.add(newRegionGroup);
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/DatabasePartitionTable.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/DatabasePartitionTable.java
index 59364e4d004..f50ac1e5e2d 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/DatabasePartitionTable.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/DatabasePartitionTable.java
@@ -90,16 +90,12 @@ public class DatabasePartitionTable {
    * Cache allocation result of new RegionGroups.
    *
    * @param replicaSets List<TRegionReplicaSet>
-   * @param regionGroupCreateTimeMap Map<RegionGroupId, create time>
+   * @param createTime The creation time of RegionGroups
    */
-  public void createRegionGroups(
-      List<TRegionReplicaSet> replicaSets, Map<TConsensusGroupId, Long> 
regionGroupCreateTimeMap) {
+  public void createRegionGroups(List<TRegionReplicaSet> replicaSets, long 
createTime) {
     replicaSets.forEach(
         replicaSet ->
-            regionGroupMap.put(
-                replicaSet.getRegionId(),
-                new RegionGroup(
-                    regionGroupCreateTimeMap.get(replicaSet.getRegionId()), 
replicaSet)));
+            regionGroupMap.put(replicaSet.getRegionId(), new 
RegionGroup(createTime, replicaSet)));
   }
 
   /** @return Deep copy of all Regions' RegionReplicaSet within one 
StorageGroup */
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
index 66034f362f7..23d35c54097 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
@@ -167,7 +167,7 @@ public class PartitionInfo implements SnapshotProcessor {
             (database, regionReplicaSets) -> {
               databasePartitionTables
                   .get(database)
-                  .createRegionGroups(regionReplicaSets, 
plan.getRegionGroupCreateTimeMap());
+                  .createRegionGroups(regionReplicaSets, plan.getCreateTime());
               regionReplicaSets.forEach(
                   regionReplicaSet ->
                       maxRegionId.set(
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/statemachine/CreateRegionGroupsProcedure.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/statemachine/CreateRegionGroupsProcedure.java
index caefac2a0d0..b114d42ecdf 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/statemachine/CreateRegionGroupsProcedure.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/statemachine/CreateRegionGroupsProcedure.java
@@ -91,6 +91,7 @@ public class CreateRegionGroupsProcedure
         break;
       case SHUNT_REGION_REPLICAS:
         persistPlan = new CreateRegionGroupsPlan();
+        persistPlan.setCreateTime(CommonDateTimeUtils.currentTime());
         OfferRegionMaintainTasksPlan offerPlan = new 
OfferRegionMaintainTasksPlan();
         // Filter those RegionGroups that created successfully
         createRegionGroupsPlan
@@ -103,8 +104,7 @@ public class CreateRegionGroupsProcedure
                               regionReplicaSet.getRegionId())) {
                             // A RegionGroup was created successfully when
                             // all RegionReplicas were created successfully
-                            persistPlan.addRegionGroup(
-                                database, regionReplicaSet, 
CommonDateTimeUtils.currentTime());
+                            persistPlan.addRegionGroup(database, 
regionReplicaSet);
                             LOGGER.info(
                                 "[CreateRegionGroups] All replicas of 
RegionGroup: {} are created successfully!",
                                 regionReplicaSet.getRegionId());
@@ -116,8 +116,7 @@ public class CreateRegionGroupsProcedure
                                 <= 
(regionReplicaSet.getDataNodeLocationsSize() - 1) / 2) {
                               // A RegionGroup can provide service as long as 
there are more than
                               // half of the RegionReplicas created 
successfully
-                              persistPlan.addRegionGroup(
-                                  database, regionReplicaSet, 
CommonDateTimeUtils.currentTime());
+                              persistPlan.addRegionGroup(database, 
regionReplicaSet);
 
                               // Build recreate tasks
                               failedRegionReplicas
diff --git 
a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
 
b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
index 02523c99c17..8554a1c4615 100644
--- 
a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
+++ 
b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
@@ -347,15 +347,15 @@ public class ConfigPhysicalPlanSerDeTest {
     dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 
10750));
 
     CreateRegionGroupsPlan req0 = new CreateRegionGroupsPlan();
+    req0.setCreateTime(CommonDateTimeUtils.currentTime());
     TRegionReplicaSet dataRegionSet = new TRegionReplicaSet();
     dataRegionSet.setRegionId(new 
TConsensusGroupId(TConsensusGroupType.DataRegion, 0));
     
dataRegionSet.setDataNodeLocations(Collections.singletonList(dataNodeLocation));
-    req0.addRegionGroup("root.sg0", dataRegionSet, 
CommonDateTimeUtils.currentTime());
-
+    req0.addRegionGroup("root.sg0", dataRegionSet);
     TRegionReplicaSet schemaRegionSet = new TRegionReplicaSet();
     schemaRegionSet.setRegionId(new 
TConsensusGroupId(TConsensusGroupType.SchemaRegion, 1));
     
schemaRegionSet.setDataNodeLocations(Collections.singletonList(dataNodeLocation));
-    req0.addRegionGroup("root.sg1", schemaRegionSet, 
CommonDateTimeUtils.currentTime());
+    req0.addRegionGroup("root.sg1", schemaRegionSet);
 
     CreateRegionGroupsPlan req1 =
         (CreateRegionGroupsPlan) 
ConfigPhysicalPlan.Factory.create(req0.serializeToByteBuffer());
@@ -867,13 +867,13 @@ public class ConfigPhysicalPlanSerDeTest {
     failedRegions.put(dataRegionGroupId, dataRegionSet);
     failedRegions.put(schemaRegionGroupId, schemaRegionSet);
     CreateRegionGroupsPlan createRegionGroupsPlan = new 
CreateRegionGroupsPlan();
-    createRegionGroupsPlan.addRegionGroup(
-        "root.sg0", dataRegionSet, CommonDateTimeUtils.currentTime());
-    createRegionGroupsPlan.addRegionGroup(
-        "root.sg1", schemaRegionSet, CommonDateTimeUtils.currentTime());
+    createRegionGroupsPlan.setCreateTime(CommonDateTimeUtils.currentTime());
+    createRegionGroupsPlan.addRegionGroup("root.sg0", dataRegionSet);
+    createRegionGroupsPlan.addRegionGroup("root.sg1", schemaRegionSet);
     CreateRegionGroupsPlan persistPlan = new CreateRegionGroupsPlan();
-    persistPlan.addRegionGroup("root.sg0", dataRegionSet, 
CommonDateTimeUtils.currentTime());
-    persistPlan.addRegionGroup("root.sg1", schemaRegionSet, 
CommonDateTimeUtils.currentTime());
+    persistPlan.setCreateTime(CommonDateTimeUtils.currentTime());
+    persistPlan.addRegionGroup("root.sg0", dataRegionSet);
+    persistPlan.addRegionGroup("root.sg1", schemaRegionSet);
     CreateRegionGroupsProcedure procedure0 =
         new CreateRegionGroupsProcedure(
             TConsensusGroupType.DataRegion, createRegionGroupsPlan, 
persistPlan, failedRegions);
diff --git 
a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PartitionInfoTest.java
 
b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PartitionInfoTest.java
index 2f289dd7246..c0761667677 100644
--- 
a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PartitionInfoTest.java
+++ 
b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PartitionInfoTest.java
@@ -109,13 +109,14 @@ public class PartitionInfoTest {
 
     // Create a SchemaRegion
     CreateRegionGroupsPlan createRegionGroupsReq = new 
CreateRegionGroupsPlan();
+    createRegionGroupsReq.setCreateTime(CommonDateTimeUtils.currentTime());
+
     TRegionReplicaSet schemaRegionReplicaSet =
         generateTRegionReplicaSet(
             testFlag.SchemaPartition.getFlag(),
             generateTConsensusGroupId(
                 testFlag.SchemaPartition.getFlag(), 
TConsensusGroupType.SchemaRegion));
-    createRegionGroupsReq.addRegionGroup(
-        "root.test", schemaRegionReplicaSet, 
CommonDateTimeUtils.currentTime());
+    createRegionGroupsReq.addRegionGroup("root.test", schemaRegionReplicaSet);
     partitionInfo.createRegionGroups(createRegionGroupsReq);
 
     // Create a DataRegion
@@ -125,8 +126,7 @@ public class PartitionInfoTest {
             testFlag.DataPartition.getFlag(),
             generateTConsensusGroupId(
                 testFlag.DataPartition.getFlag(), 
TConsensusGroupType.DataRegion));
-    createRegionGroupsReq.addRegionGroup(
-        "root.test", dataRegionReplicaSet, CommonDateTimeUtils.currentTime());
+    createRegionGroupsReq.addRegionGroup("root.test", dataRegionReplicaSet);
     partitionInfo.createRegionGroups(createRegionGroupsReq);
 
     // Create a SchemaPartition
@@ -166,24 +166,24 @@ public class PartitionInfoTest {
 
       // Create a SchemaRegion
       CreateRegionGroupsPlan createRegionGroupsPlan = new 
CreateRegionGroupsPlan();
+      createRegionGroupsPlan.setCreateTime(CommonDateTimeUtils.currentTime());
       TRegionReplicaSet schemaRegionReplicaSet =
           generateTRegionReplicaSet(
               testFlag.SchemaPartition.getFlag(),
               generateTConsensusGroupId(
                   testFlag.SchemaPartition.getFlag(), 
TConsensusGroupType.SchemaRegion));
-      createRegionGroupsPlan.addRegionGroup(
-          "root.test" + i, schemaRegionReplicaSet, 
CommonDateTimeUtils.currentTime());
+      createRegionGroupsPlan.addRegionGroup("root.test" + i, 
schemaRegionReplicaSet);
       partitionInfo.createRegionGroups(createRegionGroupsPlan);
 
       // Create a DataRegion
       createRegionGroupsPlan = new CreateRegionGroupsPlan();
+      createRegionGroupsPlan.setCreateTime(CommonDateTimeUtils.currentTime());
       TRegionReplicaSet dataRegionReplicaSet =
           generateTRegionReplicaSet(
               testFlag.DataPartition.getFlag(),
               generateTConsensusGroupId(
                   testFlag.DataPartition.getFlag(), 
TConsensusGroupType.DataRegion));
-      createRegionGroupsPlan.addRegionGroup(
-          "root.test" + i, dataRegionReplicaSet, 
CommonDateTimeUtils.currentTime());
+      createRegionGroupsPlan.addRegionGroup("root.test" + i, 
dataRegionReplicaSet);
       partitionInfo.createRegionGroups(createRegionGroupsPlan);
     }
     GetRegionInfoListPlan regionReq = new GetRegionInfoListPlan();
diff --git 
a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateRegionGroupsProcedureTest.java
 
b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateRegionGroupsProcedureTest.java
index 15108131c61..c8a0ef129d7 100644
--- 
a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateRegionGroupsProcedureTest.java
+++ 
b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateRegionGroupsProcedureTest.java
@@ -92,13 +92,14 @@ public class CreateRegionGroupsProcedureTest {
     assertEquals(failedRegions0, failedRegions1);
 
     CreateRegionGroupsPlan createRegionGroupsPlan = new 
CreateRegionGroupsPlan();
-    createRegionGroupsPlan.addRegionGroup(
-        "root.sg0", dataRegionSet, CommonDateTimeUtils.currentTime());
-    createRegionGroupsPlan.addRegionGroup(
-        "root.sg1", schemaRegionSet, CommonDateTimeUtils.currentTime());
+    createRegionGroupsPlan.setCreateTime(CommonDateTimeUtils.currentTime());
+    createRegionGroupsPlan.addRegionGroup("root.sg0", dataRegionSet);
+    createRegionGroupsPlan.addRegionGroup("root.sg1", schemaRegionSet);
+
     CreateRegionGroupsPlan persistPlan = new CreateRegionGroupsPlan();
-    persistPlan.addRegionGroup("root.sg0", dataRegionSet, 
CommonDateTimeUtils.currentTime());
-    persistPlan.addRegionGroup("root.sg1", schemaRegionSet, 
CommonDateTimeUtils.currentTime());
+    persistPlan.setCreateTime(CommonDateTimeUtils.currentTime());
+    persistPlan.addRegionGroup("root.sg0", dataRegionSet);
+    persistPlan.addRegionGroup("root.sg1", schemaRegionSet);
 
     CreateRegionGroupsProcedure procedure0 =
         new CreateRegionGroupsProcedure(

Reply via email to