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

dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 4dda5aad090 [fix](fe ut) fix unstable test DecommissionBackendTest 
(#26891)
4dda5aad090 is described below

commit 4dda5aad090b857f5b3a53d7a062df54cad6a37b
Author: yujun <[email protected]>
AuthorDate: Wed Nov 15 21:02:59 2023 +0800

    [fix](fe ut) fix unstable test DecommissionBackendTest (#26891)
---
 .../doris/cluster/DecommissionBackendTest.java     | 45 +++++++++++++---------
 .../apache/doris/utframe/TestWithFeService.java    |  6 +++
 2 files changed, 32 insertions(+), 19 deletions(-)

diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/cluster/DecommissionBackendTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/cluster/DecommissionBackendTest.java
index 17af00a6540..6d2722ad4ec 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/cluster/DecommissionBackendTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/cluster/DecommissionBackendTest.java
@@ -18,11 +18,15 @@
 package org.apache.doris.cluster;
 
 import org.apache.doris.analysis.AlterSystemStmt;
+import org.apache.doris.catalog.Database;
 import org.apache.doris.catalog.Env;
+import org.apache.doris.catalog.MaterializedIndex;
+import org.apache.doris.catalog.OlapTable;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.common.Config;
 import org.apache.doris.common.FeConstants;
 import org.apache.doris.system.Backend;
+import org.apache.doris.system.SystemInfoService;
 import org.apache.doris.utframe.TestWithFeService;
 
 import com.google.common.collect.ImmutableMap;
@@ -55,6 +59,7 @@ public class DecommissionBackendTest extends 
TestWithFeService {
         Config.tablet_checker_interval_ms = 1000;
         Config.tablet_repair_delay_factor_second = 1;
         Config.allow_replica_on_same_host = true;
+        Config.disable_balance = true;
     }
 
     @Test
@@ -103,11 +108,8 @@ public class DecommissionBackendTest extends 
TestWithFeService {
                 Env.getCurrentInvertedIndex().getTabletMetaMap().size());
 
         // 6. add backend
-        String addBackendStmtStr = "alter system add backend \"127.0.0.1:" + 
srcBackend.getHeartbeatPort() + "\"";
-        AlterSystemStmt addBackendStmt = (AlterSystemStmt) 
parseAndAnalyzeStmt(addBackendStmtStr);
-        
Env.getCurrentEnv().getAlterInstance().processAlterCluster(addBackendStmt);
+        addNewBackend();
         Assertions.assertEquals(backendNum(), 
Env.getCurrentSystemInfo().getIdToBackend().size());
-
     }
 
     @Test
@@ -131,9 +133,7 @@ public class DecommissionBackendTest extends 
TestWithFeService {
         Assertions.assertEquals(backendNum() - 1, 
Env.getCurrentSystemInfo().getIdToBackend().size());
 
         // add backend
-        String addBackendStmtStr = "alter system add backend \"127.0.0.1:" + 
srcBackend.getHeartbeatPort() + "\"";
-        AlterSystemStmt addBackendStmt = (AlterSystemStmt) 
parseAndAnalyzeStmt(addBackendStmtStr);
-        
Env.getCurrentEnv().getAlterInstance().processAlterCluster(addBackendStmt);
+        addNewBackend();
         Assertions.assertEquals(backendNum(), 
Env.getCurrentSystemInfo().getIdToBackend().size());
 
     }
@@ -143,28 +143,37 @@ public class DecommissionBackendTest extends 
TestWithFeService {
         // 1. create connect context
         connectContext = createDefaultCtx();
 
-        ImmutableMap<Long, Backend> idToBackendRef = 
Env.getCurrentSystemInfo().getIdToBackend();
+        SystemInfoService infoService = Env.getCurrentSystemInfo();
+
+        ImmutableMap<Long, Backend> idToBackendRef = 
infoService.getIdToBackend();
         Assertions.assertEquals(backendNum(), idToBackendRef.size());
 
         // 2. create database db2
         createDatabase("db2");
         System.out.println(Env.getCurrentInternalCatalog().getDbNames());
 
+        long availableBeNum = infoService.getAllBackendIds(true).stream()
+                .filter(beId -> 
infoService.checkBackendScheduleAvailable(beId)).count();
+
         // 3. create table tbl1 tbl2
-        createTable("create table db2.tbl1(k1 int) distributed by hash(k1) 
buckets 3 properties('replication_num' = '2');");
+        createTable("create table db2.tbl1(k1 int) distributed by hash(k1) 
buckets 3 properties('replication_num' = '"
+                + availableBeNum + "');");
         createTable("create table db2.tbl2(k1 int) distributed by hash(k1) 
buckets 3 properties('replication_num' = '1');");
 
         // 4. query tablet num
         int tabletNum = 
Env.getCurrentInvertedIndex().getTabletMetaMap().size();
         Assertions.assertTrue(tabletNum > 0);
 
-        Backend srcBackend = null;
-        for (Backend backend : idToBackendRef.values()) {
-            if 
(!Env.getCurrentInvertedIndex().getTabletIdsByBackendId(backend.getId()).isEmpty())
 {
-                srcBackend = backend;
-                break;
-            }
-        }
+        Database db = 
Env.getCurrentInternalCatalog().getDbOrMetaException("default_cluster:db2");
+        OlapTable tbl = (OlapTable) db.getTableOrMetaException("tbl1");
+        Assertions.assertNotNull(tbl);
+        long backendId = tbl.getPartitions().iterator().next()
+                
.getMaterializedIndices(MaterializedIndex.IndexExtState.ALL).iterator().next()
+                .getTablets().iterator().next()
+                .getReplicas().iterator().next()
+                .getBackendId();
+
+        Backend srcBackend = infoService.getBackend(backendId);
         Assertions.assertNotNull(srcBackend);
 
         // 5. drop table tbl1
@@ -198,9 +207,7 @@ public class DecommissionBackendTest extends 
TestWithFeService {
         Assertions.assertDoesNotThrow(() -> recoverTable("db2.tbl1"));
         Assertions.assertDoesNotThrow(() -> showCreateTable(sql));
 
-        String addBackendStmtStr = "alter system add backend \"127.0.0.1:" + 
srcBackend.getHeartbeatPort() + "\"";
-        AlterSystemStmt addBackendStmt = (AlterSystemStmt) 
parseAndAnalyzeStmt(addBackendStmtStr);
-        
Env.getCurrentEnv().getAlterInstance().processAlterCluster(addBackendStmt);
+        addNewBackend();
         Assertions.assertEquals(backendNum(), 
Env.getCurrentSystemInfo().getIdToBackend().size());
     }
 
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java 
b/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java
index b5ef93b97a2..d3ac91a58b2 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java
@@ -125,6 +125,7 @@ public abstract class TestWithFeService {
     protected String runningDir = "fe/mocked/" + getClass().getSimpleName() + 
"/" + UUID.randomUUID() + "/";
     protected ConnectContext connectContext;
     protected boolean needCleanDir = true;
+    protected int lastFeRpcPort = 0;
 
     protected static final String DEFAULT_CLUSTER_PREFIX = "default_cluster:";
 
@@ -379,6 +380,7 @@ public abstract class TestWithFeService {
         MockedFrontend frontend = new MockedFrontend();
         frontend.init(dorisHome + "/" + runningDir, feConfMap);
         frontend.start(new String[0]);
+        lastFeRpcPort = feRpcPort;
         return feRpcPort;
     }
 
@@ -435,6 +437,10 @@ public abstract class TestWithFeService {
         checkBEHeartbeat(bes);
     }
 
+    protected Backend addNewBackend() throws IOException, InterruptedException 
{
+        return createBackend("127.0.0.1", lastFeRpcPort);
+    }
+
     protected Backend createBackend(String beHost, int feRpcPort) throws 
IOException, InterruptedException {
         IOException exception = null;
         for (int i = 0; i <= 3; i++) {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to