This is an automated email from the ASF dual-hosted git repository.
tanxinyu 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 ec118416f36 Added getRegionId api for partitionManager (#11663)
ec118416f36 is described below
commit ec118416f36f820f9c809897e06dc922bc0e57ea
Author: Caideyipi <[email protected]>
AuthorDate: Wed Dec 6 16:40:26 2023 +0800
Added getRegionId api for partitionManager (#11663)
---
.../manager/partition/PartitionManager.java | 15 +++--
.../partition/DatabasePartitionTable.java | 8 +++
.../persistence/partition/PartitionInfo.java | 8 +++
.../confignode/persistence/PartitionInfoTest.java | 70 +++++++++++++++++-----
4 files changed, 82 insertions(+), 19 deletions(-)
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
index 051cb67b95c..665db6af25b 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
@@ -30,8 +30,6 @@ import org.apache.iotdb.commons.cluster.RegionRoleType;
import org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory;
import org.apache.iotdb.commons.concurrent.ThreadName;
import org.apache.iotdb.commons.concurrent.threadpool.ScheduledExecutorUtil;
-import org.apache.iotdb.commons.conf.CommonConfig;
-import org.apache.iotdb.commons.conf.CommonDescriptor;
import org.apache.iotdb.commons.partition.DataPartitionTable;
import org.apache.iotdb.commons.partition.SchemaPartitionTable;
import org.apache.iotdb.commons.partition.executor.SeriesPartitionExecutor;
@@ -125,8 +123,6 @@ public class PartitionManager {
private static final RegionGroupExtensionPolicy
DATA_REGION_GROUP_EXTENSION_POLICY =
CONF.getDataRegionGroupExtensionPolicy();
- private static final CommonConfig COMMON_CONFIG =
CommonDescriptor.getInstance().getConfig();
-
private final IManager configManager;
private final PartitionInfo partitionInfo;
@@ -1392,6 +1388,17 @@ public class PartitionManager {
partitionInfo.getDataRegionIds(databases, dataRegionIds);
}
+ /**
+ * Get the {@link TConsensusGroupType} of the given integer regionId.
+ *
+ * @param regionId The specified integer regionId
+ * @return {@link Optional#of(Object tConsensusGroupType)} of the given
integer regionId, or
+ * {@link Optional#empty()} if the integer regionId does not match any
of the regionGroups.
+ */
+ public Optional<TConsensusGroupType> getRegionType(int regionId) {
+ return partitionInfo.getRegionType(regionId);
+ }
+
/**
* Get the last DataAllotTable of the specified Database.
*
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 bee9888d344..88f4e79bed1 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
@@ -49,6 +49,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Optional;
import java.util.Set;
import java.util.Vector;
import java.util.concurrent.ConcurrentHashMap;
@@ -593,6 +594,13 @@ public class DatabasePartitionTable {
return dataRegionIds;
}
+ public Optional<TConsensusGroupType> getRegionType(int regionId) {
+ return regionGroupMap.keySet().stream()
+ .filter(tConsensusGroupId -> tConsensusGroupId.getId() == regionId)
+ .map(TConsensusGroupId::getType)
+ .findFirst();
+ }
+
/**
* Get the last DataAllotTable.
*
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 459904e5bc6..561dea86082 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
@@ -1094,6 +1094,14 @@ public class PartitionInfo implements SnapshotProcessor {
}
}
+ public Optional<TConsensusGroupType> getRegionType(int regionId) {
+ return databasePartitionTables.values().stream()
+ .map(databasePartitionTable ->
databasePartitionTable.getRegionType(regionId))
+ .filter(Optional::isPresent)
+ .map(Optional::get)
+ .findFirst();
+ }
+
public void clear() {
nextRegionGroupId.set(-1);
databasePartitionTables.clear();
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 f39dbae6a63..3bb7e22a472 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
@@ -45,9 +45,9 @@ import org.apache.iotdb.confignode.rpc.thrift.TShowRegionReq;
import org.apache.commons.io.FileUtils;
import org.apache.thrift.TException;
-import org.junit.AfterClass;
+import org.junit.After;
import org.junit.Assert;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.Test;
import java.io.File;
@@ -57,6 +57,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import static org.apache.iotdb.db.utils.constant.TestConstant.BASE_OUTPUT_PATH;
@@ -80,16 +81,16 @@ public class PartitionInfoTest {
}
}
- @BeforeClass
- public static void setup() {
+ @Before
+ public void setup() {
partitionInfo = new PartitionInfo();
if (!snapshotDir.exists()) {
snapshotDir.mkdirs();
}
}
- @AfterClass
- public static void cleanup() throws IOException {
+ @After
+ public void cleanup() throws IOException {
partitionInfo.clear();
if (snapshotDir.exists()) {
FileUtils.deleteDirectory(snapshotDir);
@@ -151,6 +152,45 @@ public class PartitionInfoTest {
Assert.assertEquals(partitionInfo, partitionInfo1);
}
+ @Test
+ public void testGetRegionType() {
+
+ partitionInfo.generateNextRegionGroupId();
+
+ // Set StorageGroup
+ partitionInfo.createDatabase(
+ new DatabaseSchemaPlan(
+ ConfigPhysicalPlanType.CreateDatabase, new
TDatabaseSchema("root.test")));
+
+ // Create a SchemaRegion
+ CreateRegionGroupsPlan createRegionGroupsPlan = new
CreateRegionGroupsPlan();
+ TConsensusGroupId schemaRegionId =
+ generateTConsensusGroupId(
+ testFlag.SchemaPartition.getFlag(),
TConsensusGroupType.SchemaRegion);
+
+ TRegionReplicaSet schemaRegionReplicaSet =
+ generateTRegionReplicaSet(testFlag.SchemaPartition.getFlag(),
schemaRegionId);
+ createRegionGroupsPlan.addRegionGroup("root.test", schemaRegionReplicaSet);
+ partitionInfo.createRegionGroups(createRegionGroupsPlan);
+
+ // Create a DataRegion
+ createRegionGroupsPlan = new CreateRegionGroupsPlan();
+ TConsensusGroupId dataRegionId =
+ generateTConsensusGroupId(testFlag.DataPartition.getFlag(),
TConsensusGroupType.DataRegion);
+ TRegionReplicaSet dataRegionReplicaSet =
+ generateTRegionReplicaSet(testFlag.DataPartition.getFlag(),
dataRegionId);
+ createRegionGroupsPlan.addRegionGroup("root.test", dataRegionReplicaSet);
+ partitionInfo.createRegionGroups(createRegionGroupsPlan);
+
+ Assert.assertEquals(
+ Optional.of(TConsensusGroupType.SchemaRegion),
+ partitionInfo.getRegionType(schemaRegionId.getId()));
+ Assert.assertEquals(
+ Optional.of(TConsensusGroupType.DataRegion),
+ partitionInfo.getRegionType(dataRegionId.getId()));
+ Assert.assertEquals(Optional.empty(), partitionInfo.getRegionType(-1));
+ }
+
@Test
public void testShowRegion() {
for (int i = 0; i < 2; i++) {
@@ -187,43 +227,43 @@ public class PartitionInfoTest {
regionReq.setShowRegionReq(showRegionReq);
RegionInfoListResp regionInfoList1 =
(RegionInfoListResp) partitionInfo.getRegionInfoList(regionReq);
- Assert.assertEquals(regionInfoList1.getRegionInfoList().size(), 20);
+ Assert.assertEquals(20, regionInfoList1.getRegionInfoList().size());
regionInfoList1
.getRegionInfoList()
- .forEach((regionInfo) ->
Assert.assertEquals(regionInfo.getClientRpcIp(), "127.0.0.1"));
+ .forEach((regionInfo) -> Assert.assertEquals("127.0.0.1",
regionInfo.getClientRpcIp()));
showRegionReq.setConsensusGroupType(TConsensusGroupType.SchemaRegion);
RegionInfoListResp regionInfoList2 =
(RegionInfoListResp) partitionInfo.getRegionInfoList(regionReq);
- Assert.assertEquals(regionInfoList2.getRegionInfoList().size(), 10);
+ Assert.assertEquals(10, regionInfoList2.getRegionInfoList().size());
regionInfoList2
.getRegionInfoList()
.forEach(
(regionInfo) ->
Assert.assertEquals(
- regionInfo.getConsensusGroupId().getType(),
TConsensusGroupType.SchemaRegion));
+ TConsensusGroupType.SchemaRegion,
regionInfo.getConsensusGroupId().getType()));
showRegionReq.setConsensusGroupType(TConsensusGroupType.DataRegion);
RegionInfoListResp regionInfoList3 =
(RegionInfoListResp) partitionInfo.getRegionInfoList(regionReq);
- Assert.assertEquals(regionInfoList3.getRegionInfoList().size(), 10);
+ Assert.assertEquals(10, regionInfoList3.getRegionInfoList().size());
regionInfoList3
.getRegionInfoList()
.forEach(
(regionInfo) ->
Assert.assertEquals(
- regionInfo.getConsensusGroupId().getType(),
TConsensusGroupType.DataRegion));
+ TConsensusGroupType.DataRegion,
regionInfo.getConsensusGroupId().getType()));
showRegionReq.setConsensusGroupType(null);
showRegionReq.setDatabases(Collections.singletonList("root.test1"));
RegionInfoListResp regionInfoList4 =
(RegionInfoListResp) partitionInfo.getRegionInfoList(regionReq);
- Assert.assertEquals(regionInfoList4.getRegionInfoList().size(), 10);
+ Assert.assertEquals(10, regionInfoList4.getRegionInfoList().size());
regionInfoList4
.getRegionInfoList()
.forEach(
(regionInfo) -> {
- Assert.assertEquals(regionInfo.getClientRpcIp(), "127.0.0.1");
- Assert.assertEquals(regionInfo.getDatabase(), "root.test1");
+ Assert.assertEquals("127.0.0.1", regionInfo.getClientRpcIp());
+ Assert.assertEquals("root.test1", regionInfo.getDatabase());
});
}