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(