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());
             });
   }
 

Reply via email to