You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2022/11/27 16:44:52 UTC

[iotdb] branch master updated: Fix IT bug (#8206)

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

qiaojialin 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 c43deda65b Fix IT bug (#8206)
c43deda65b is described below

commit c43deda65bd6c21f476f6c7646e40e62990cbe96
Author: YongzaoDan <33...@users.noreply.github.com>
AuthorDate: Mon Nov 28 00:44:47 2022 +0800

    Fix IT bug (#8206)
---
 .../java/org/apache/iotdb/it/env/MppConfig.java    | 11 +--
 .../org/apache/iotdb/itbase/env/BaseConfig.java    | 10 +--
 .../it/IoTDBClusterRegionLeaderBalancingIT.java    | 19 ++---
 .../it/partition/IoTDBPartitionDurableIT.java      |  4 +-
 .../it/partition/IoTDBPartitionGetterIT.java       | 82 ++++++++++++++--------
 5 files changed, 78 insertions(+), 48 deletions(-)

diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/MppConfig.java b/integration-test/src/main/java/org/apache/iotdb/it/env/MppConfig.java
index 5a7c46e059..809d8e99b5 100644
--- a/integration-test/src/main/java/org/apache/iotdb/it/env/MppConfig.java
+++ b/integration-test/src/main/java/org/apache/iotdb/it/env/MppConfig.java
@@ -342,17 +342,20 @@ public class MppConfig implements BaseConfig {
   }
 
   @Override
-  public BaseConfig setEnableRatisLeaderBalance(boolean enableRatisLeaderBalance) {
+  public BaseConfig setEnableAutoLeaderBalanceForRatisConsensus(
+      boolean enableAutoLeaderBalanceForRatisConsensus) {
     confignodeProperties.setProperty(
-        "enable_auto_leader_balance_for_ratis", String.valueOf(enableRatisLeaderBalance));
+        "enable_auto_leader_balance_for_ratis_consensus",
+        String.valueOf(enableAutoLeaderBalanceForRatisConsensus));
     return this;
   }
 
   @Override
-  public BaseConfig setEnableIoTConsensusLeaderBalance(boolean enableIoTConsensusLeaderBalance) {
+  public BaseConfig setEnableAutoLeaderBalanceForIoTConsensus(
+      boolean enableAutoLeaderBalanceForIoTConsensus) {
     confignodeProperties.setProperty(
         "enable_auto_leader_balance_for_iot_consensus",
-        String.valueOf(enableIoTConsensusLeaderBalance));
+        String.valueOf(enableAutoLeaderBalanceForIoTConsensus));
     return this;
   }
 
diff --git a/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseConfig.java b/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseConfig.java
index 808ca299bd..877ee4924a 100644
--- a/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseConfig.java
+++ b/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseConfig.java
@@ -363,19 +363,21 @@ public interface BaseConfig {
     return 10000;
   }
 
-  default BaseConfig setEnableRatisLeaderBalance(boolean enableRatisLeaderBalance) {
+  default BaseConfig setEnableAutoLeaderBalanceForRatisConsensus(
+      boolean enableAutoLeaderBalanceForRatisConsensus) {
     return this;
   }
 
-  default boolean isEnableRatisLeaderBalance() {
+  default boolean isEnableAutoLeaderBalanceForRatisConsensus() {
     return false;
   }
 
-  default BaseConfig setEnableIoTConsensusLeaderBalance(boolean enableIoTConsensusLeaderBalance) {
+  default BaseConfig setEnableAutoLeaderBalanceForIoTConsensus(
+      boolean enableAutoLeaderBalanceForIoTConsensus) {
     return this;
   }
 
-  default boolean isEnableIoTConsensusLeaderBalance() {
+  default boolean isEnableAutoLeaderBalanceForIoTConsensus() {
     return true;
   }
 
diff --git a/integration-test/src/test/java/org/apache/iotdb/confignode/it/IoTDBClusterRegionLeaderBalancingIT.java b/integration-test/src/test/java/org/apache/iotdb/confignode/it/IoTDBClusterRegionLeaderBalancingIT.java
index b7cd1af7e7..8fe1e11bd8 100644
--- a/integration-test/src/test/java/org/apache/iotdb/confignode/it/IoTDBClusterRegionLeaderBalancingIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/confignode/it/IoTDBClusterRegionLeaderBalancingIT.java
@@ -66,8 +66,8 @@ public class IoTDBClusterRegionLeaderBalancingIT {
 
   private static final BaseConfig CONF = ConfigFactory.getConfig();
 
-  protected static boolean originalEnableRatisLeaderBalance;
-  protected static boolean originalEnableIoTConsensusLeaderBalance;
+  protected static boolean originalEnableAutoLeaderBalanceForRatisConsensus;
+  protected static boolean originalEnableAutoLeaderBalancerForIoTConsensus;
 
   protected static String originalSchemaRegionConsensusProtocolClass;
   private static final String testSchemaRegionConsensusProtocolClass =
@@ -83,10 +83,12 @@ public class IoTDBClusterRegionLeaderBalancingIT {
 
   @BeforeClass
   public static void setUp() {
-    originalEnableRatisLeaderBalance = CONF.isEnableRatisLeaderBalance();
-    CONF.setEnableRatisLeaderBalance(true);
-    originalEnableIoTConsensusLeaderBalance = CONF.isEnableIoTConsensusLeaderBalance();
-    CONF.setEnableIoTConsensusLeaderBalance(true);
+    originalEnableAutoLeaderBalanceForRatisConsensus =
+        CONF.isEnableAutoLeaderBalanceForRatisConsensus();
+    CONF.setEnableAutoLeaderBalanceForRatisConsensus(true);
+    originalEnableAutoLeaderBalancerForIoTConsensus =
+        CONF.isEnableAutoLeaderBalanceForIoTConsensus();
+    CONF.setEnableAutoLeaderBalanceForIoTConsensus(true);
 
     originalSchemaRegionConsensusProtocolClass = CONF.getSchemaRegionConsensusProtocolClass();
     CONF.setSchemaRegionConsensusProtocolClass(testSchemaRegionConsensusProtocolClass);
@@ -102,8 +104,9 @@ public class IoTDBClusterRegionLeaderBalancingIT {
 
   @AfterClass
   public static void tearDown() {
-    CONF.setEnableRatisLeaderBalance(originalEnableRatisLeaderBalance);
-    CONF.setEnableIoTConsensusLeaderBalance(originalEnableIoTConsensusLeaderBalance);
+    CONF.setEnableAutoLeaderBalanceForRatisConsensus(
+        originalEnableAutoLeaderBalanceForRatisConsensus);
+    CONF.setEnableAutoLeaderBalanceForIoTConsensus(originalEnableAutoLeaderBalancerForIoTConsensus);
 
     CONF.setSchemaRegionConsensusProtocolClass(originalSchemaRegionConsensusProtocolClass);
     CONF.setDataRegionConsensusProtocolClass(originalDataRegionConsensusProtocolClass);
diff --git a/integration-test/src/test/java/org/apache/iotdb/confignode/it/partition/IoTDBPartitionDurableIT.java b/integration-test/src/test/java/org/apache/iotdb/confignode/it/partition/IoTDBPartitionDurableIT.java
index 0b77cfbf86..731477a326 100644
--- a/integration-test/src/test/java/org/apache/iotdb/confignode/it/partition/IoTDBPartitionDurableIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/confignode/it/partition/IoTDBPartitionDurableIT.java
@@ -220,13 +220,13 @@ public class IoTDBPartitionDurableIT {
         TimeUnit.SECONDS.sleep(1);
       }
 
-      /* Test getOrCreateSchemaPartition, the result should be NO_AVAILABLE_REGION_GROUP */
+      /* Test getOrCreateSchemaPartition, the result should be NO_ENOUGH_DATANODE */
       schemaPartitionReq =
           new TSchemaPartitionReq()
               .setPathPatternTree(ConfigNodeTestUtils.generatePatternTreeBuffer(new String[] {d1}));
       schemaPartitionTableResp = client.getOrCreateSchemaPartitionTable(schemaPartitionReq);
       Assert.assertEquals(
-          TSStatusCode.NO_AVAILABLE_REGION_GROUP.getStatusCode(),
+          TSStatusCode.NO_ENOUGH_DATANODE.getStatusCode(),
           schemaPartitionTableResp.getStatus().getCode());
 
       /* Register a new DataNode */
diff --git a/integration-test/src/test/java/org/apache/iotdb/confignode/it/partition/IoTDBPartitionGetterIT.java b/integration-test/src/test/java/org/apache/iotdb/confignode/it/partition/IoTDBPartitionGetterIT.java
index 6bf8b3d237..61c87a3f70 100644
--- a/integration-test/src/test/java/org/apache/iotdb/confignode/it/partition/IoTDBPartitionGetterIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/confignode/it/partition/IoTDBPartitionGetterIT.java
@@ -39,6 +39,8 @@ import org.apache.iotdb.confignode.rpc.thrift.TSchemaNodeManagementResp;
 import org.apache.iotdb.confignode.rpc.thrift.TSchemaPartitionReq;
 import org.apache.iotdb.confignode.rpc.thrift.TSchemaPartitionTableResp;
 import org.apache.iotdb.confignode.rpc.thrift.TSetStorageGroupReq;
+import org.apache.iotdb.confignode.rpc.thrift.TShowRegionReq;
+import org.apache.iotdb.confignode.rpc.thrift.TShowRegionResp;
 import org.apache.iotdb.confignode.rpc.thrift.TShowStorageGroupResp;
 import org.apache.iotdb.confignode.rpc.thrift.TStorageGroupSchema;
 import org.apache.iotdb.consensus.ConsensusFactory;
@@ -66,6 +68,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import static org.apache.iotdb.confignode.it.utils.ConfigNodeTestUtils.generatePatternTreeBuffer;
 
@@ -375,37 +378,56 @@ public class IoTDBPartitionGetterIT {
     try (SyncConfigNodeIServiceClient client =
         (SyncConfigNodeIServiceClient) EnvFactory.getEnv().getLeaderConfigNodeConnection()) {
 
-      // Test getSlots api
-      TGetRegionIdReq getRegionIdReq;
+      // Test getRegionId
+      TGetRegionIdReq getRegionIdReq = null;
       TGetRegionIdResp getRegionIdResp;
-
       TSeriesPartitionSlot seriesPartitionSlot = new TSeriesPartitionSlot(0);
       TTimePartitionSlot timePartitionSlot = new TTimePartitionSlot(0L);
-
-      getRegionIdReq =
-          new TGetRegionIdReq(sg0, TConsensusGroupType.DataRegion, seriesPartitionSlot);
-      getRegionIdReq.setTimeSlotId(timePartitionSlot);
-      getRegionIdResp = client.getRegionId(getRegionIdReq);
-      Assert.assertEquals(
-          TSStatusCode.SUCCESS_STATUS.getStatusCode(), getRegionIdResp.status.getCode());
-      Assert.assertEquals(1, getRegionIdResp.getDataRegionIdListSize());
-
-      getRegionIdReq.setType(TConsensusGroupType.SchemaRegion);
-      getRegionIdResp = client.getRegionId(getRegionIdReq);
-      Assert.assertEquals(
-          TSStatusCode.ILLEGAL_PARAMETER.getStatusCode(), getRegionIdResp.status.getCode());
-
-      getRegionIdReq.setType(TConsensusGroupType.ConfigNodeRegion);
-      getRegionIdResp = client.getRegionId(getRegionIdReq);
-      Assert.assertEquals(
-          TSStatusCode.ILLEGAL_PARAMETER.getStatusCode(), getRegionIdResp.status.getCode());
-
-      getRegionIdReq.unsetTimeSlotId();
-      getRegionIdReq.setType(TConsensusGroupType.DataRegion);
-      getRegionIdResp = client.getRegionId(getRegionIdReq);
-      Assert.assertEquals(
-          TSStatusCode.SUCCESS_STATUS.getStatusCode(), getRegionIdResp.status.getCode());
-      Assert.assertEquals(testLeastDataRegionGroupNum, getRegionIdResp.getDataRegionIdListSize());
+      for (int i = 0; i < storageGroupNum; i++) {
+        String curSg = sg + i;
+
+        // Get RegionIds of specified PartitionSlot
+        getRegionIdReq =
+            new TGetRegionIdReq(sg0, TConsensusGroupType.DataRegion, seriesPartitionSlot);
+        getRegionIdReq.setTimeSlotId(timePartitionSlot);
+        getRegionIdResp = client.getRegionId(getRegionIdReq);
+        Assert.assertEquals(
+            TSStatusCode.SUCCESS_STATUS.getStatusCode(), getRegionIdResp.status.getCode());
+        Assert.assertEquals(1, getRegionIdResp.getDataRegionIdListSize());
+
+        // Get RegionId with wrong PartitionSlot
+        getRegionIdReq.setType(TConsensusGroupType.SchemaRegion);
+        getRegionIdResp = client.getRegionId(getRegionIdReq);
+        Assert.assertEquals(
+            TSStatusCode.ILLEGAL_PARAMETER.getStatusCode(), getRegionIdResp.status.getCode());
+
+        // Get RegionId with wrong RegionType
+        getRegionIdReq.setType(TConsensusGroupType.ConfigNodeRegion);
+        getRegionIdResp = client.getRegionId(getRegionIdReq);
+        Assert.assertEquals(
+            TSStatusCode.ILLEGAL_PARAMETER.getStatusCode(), getRegionIdResp.status.getCode());
+
+        // Get all RegionIds within one SeriesSlot
+        AtomicInteger regionCount = new AtomicInteger(0);
+        TShowRegionResp showRegionResp = client.showRegion(new TShowRegionReq());
+        showRegionResp
+            .getRegionInfoList()
+            .forEach(
+                regionInfo -> {
+                  if (TConsensusGroupType.DataRegion.equals(
+                          regionInfo.getConsensusGroupId().getType())
+                      && regionInfo.getStorageGroup().equals(curSg)) {
+                    regionCount.getAndIncrement();
+                  }
+                });
+        getRegionIdReq.unsetTimeSlotId();
+        getRegionIdReq.setType(TConsensusGroupType.DataRegion);
+        getRegionIdResp = client.getRegionId(getRegionIdReq);
+        Assert.assertEquals(
+            TSStatusCode.SUCCESS_STATUS.getStatusCode(), getRegionIdResp.status.getCode());
+        Assert.assertEquals(
+            regionCount.get() / testReplicationFactor, getRegionIdResp.getDataRegionIdListSize());
+      }
 
       final String d00 = sg0 + ".d0.s";
       final String d01 = sg0 + ".d1.s";
@@ -468,7 +490,7 @@ public class IoTDBPartitionGetterIT {
       Assert.assertEquals(
           TSStatusCode.SUCCESS_STATUS.getStatusCode(), getSeriesSlotListResp.status.getCode());
       Assert.assertEquals(
-          testSeriesPartitionSlotNum, getSeriesSlotListResp.getSeriesSlotListSize());
+          testSeriesPartitionSlotNum + 2, getSeriesSlotListResp.getSeriesSlotListSize());
 
       getSeriesSlotListReq.setType(TConsensusGroupType.ConfigNodeRegion);
 
@@ -476,7 +498,7 @@ public class IoTDBPartitionGetterIT {
       Assert.assertEquals(
           TSStatusCode.SUCCESS_STATUS.getStatusCode(), getSeriesSlotListResp.status.getCode());
       Assert.assertEquals(
-          testSeriesPartitionSlotNum, getSeriesSlotListResp.getSeriesSlotListSize());
+          testSeriesPartitionSlotNum + 2, getSeriesSlotListResp.getSeriesSlotListSize());
 
       getSeriesSlotListReq.setType(TConsensusGroupType.SchemaRegion);