This is an automated email from the ASF dual-hosted git repository.
hello-stephen 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 897fd0f9a35 [fix](test) Isolate cloud mode in colocation proc test
(#65515)
897fd0f9a35 is described below
commit 897fd0f9a351bb13d6531e9a090a4fe373ef9ba9
Author: shuke <[email protected]>
AuthorDate: Wed Jul 15 21:05:29 2026 +0800
[fix](test) Isolate cloud mode in colocation proc test (#65515)
Problem Summary:
`ColocationGroupProcDirTest` runs with a local mock FE and a background
heartbeat daemon. Four cloud proc tests temporarily changed the
process-wide `Config.deploy_mode` to `cloud`. If heartbeat ran during
that window, it could enter cloud-only backend handling against the
local `SystemInfoService`, fail the heartbeat, and persist the only mock
backend as dead. Later tests then failed during table setup with zero
available backends, before reaching their proc assertions.
Replace the process-wide configuration changes with thread-scoped static
mocks of `Config.isCloudMode()`. The proc call under test still
exercises the cloud branch, while the heartbeat thread continues to
observe local mode.
Classification: case bug. Product proc behavior and assertions are
unchanged.
---
.../common/proc/ColocationGroupProcDirTest.java | 30 ++++++++--------------
1 file changed, 11 insertions(+), 19 deletions(-)
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/common/proc/ColocationGroupProcDirTest.java
b/fe/fe-core/src/test/java/org/apache/doris/common/proc/ColocationGroupProcDirTest.java
index bfb53825947..3e08cc82237 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/common/proc/ColocationGroupProcDirTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/common/proc/ColocationGroupProcDirTest.java
@@ -86,7 +86,6 @@ public class ColocationGroupProcDirTest extends
TestWithFeService {
@Test
public void testCloudColocationGroupDetailWithoutTag() throws Exception {
- String originDeployMode = Config.deploy_mode;
createTable("CREATE TABLE colocate_t1 (k INT) DISTRIBUTED BY HASH(k)
BUCKETS 2 "
+ "PROPERTIES ('replication_num' = '1', 'colocate_with' =
'g1')");
createTable("CREATE TABLE colocate_t2 (k INT) DISTRIBUTED BY HASH(k)
BUCKETS 2 "
@@ -99,22 +98,20 @@ public class ColocationGroupProcDirTest extends
TestWithFeService {
ColocateTableIndex colocateTableIndex =
Mockito.spy(Env.getCurrentColocateIndex());
Mockito.doReturn(Maps.<Tag,
List<List<Long>>>newHashMap()).when(colocateTableIndex)
.getBackendsPerBucketSeq(groupId);
- Config.deploy_mode = "cloud";
- try (MockedStatic<Env> mockedEnv = Mockito.mockStatic(Env.class,
Mockito.CALLS_REAL_METHODS)) {
+ try (MockedStatic<Config> mockedConfig =
Mockito.mockStatic(Config.class, Mockito.CALLS_REAL_METHODS);
+ MockedStatic<Env> mockedEnv = Mockito.mockStatic(Env.class,
Mockito.CALLS_REAL_METHODS)) {
+ mockedConfig.when(Config::isCloudMode).thenReturn(true);
mockedEnv.when(Env::getCurrentColocateIndex).thenReturn(colocateTableIndex);
ProcNodeInterface node = new
ColocationGroupProcDir().lookup(groupId.toString());
ProcResult result = node.fetchResult();
Assertions.assertEquals(Lists.newArrayList("BucketIndex",
"BackendIds"), result.getColumnNames());
Assertions.assertFalse(result.getRows().isEmpty());
Assertions.assertTrue(result.getRows().stream().anyMatch(row ->
row.size() == 2 && !row.get(1).isEmpty()));
- } finally {
- Config.deploy_mode = originDeployMode;
}
}
@Test
public void testCloudGlobalColocationGroupDetailFallback() throws
Exception {
- String originDeployMode = Config.deploy_mode;
createTable("CREATE TABLE global_colocate_t1 (k INT) DISTRIBUTED BY
HASH(k) BUCKETS 2 "
+ "PROPERTIES ('replication_num' = '1', 'colocate_with' =
'__global__g1')");
@@ -125,22 +122,20 @@ public class ColocationGroupProcDirTest extends
TestWithFeService {
ColocateTableIndex colocateTableIndex =
Mockito.spy(Env.getCurrentColocateIndex());
Mockito.doReturn(Maps.<Tag,
List<List<Long>>>newHashMap()).when(colocateTableIndex)
.getBackendsPerBucketSeq(groupId);
- Config.deploy_mode = "cloud";
- try (MockedStatic<Env> mockedEnv = Mockito.mockStatic(Env.class,
Mockito.CALLS_REAL_METHODS)) {
+ try (MockedStatic<Config> mockedConfig =
Mockito.mockStatic(Config.class, Mockito.CALLS_REAL_METHODS);
+ MockedStatic<Env> mockedEnv = Mockito.mockStatic(Env.class,
Mockito.CALLS_REAL_METHODS)) {
+ mockedConfig.when(Config::isCloudMode).thenReturn(true);
mockedEnv.when(Env::getCurrentColocateIndex).thenReturn(colocateTableIndex);
ProcNodeInterface node = new
ColocationGroupProcDir().lookup(groupId.toString());
ProcResult result = node.fetchResult();
Assertions.assertEquals(Lists.newArrayList("BucketIndex",
"BackendIds"), result.getColumnNames());
Assertions.assertFalse(result.getRows().isEmpty());
Assertions.assertTrue(result.getRows().stream().anyMatch(row ->
row.size() == 2 && !row.get(1).isEmpty()));
- } finally {
- Config.deploy_mode = originDeployMode;
}
}
@Test
public void
testCloudColocationGroupDetailFallbackSkipsUnusableFirstTable() throws
Exception {
- String originDeployMode = Config.deploy_mode;
createTable("CREATE TABLE colocate_t5 (k INT) DISTRIBUTED BY HASH(k)
BUCKETS 2 "
+ "PROPERTIES ('replication_num' = '1', 'colocate_with' =
'g3')");
createTable("CREATE TABLE colocate_t6 (k INT) DISTRIBUTED BY HASH(k)
BUCKETS 2 "
@@ -153,8 +148,9 @@ public class ColocationGroupProcDirTest extends
TestWithFeService {
ColocateTableIndex colocateTableIndex =
Mockito.spy(Env.getCurrentColocateIndex());
Mockito.doReturn(Maps.<Tag,
List<List<Long>>>newHashMap()).when(colocateTableIndex)
.getBackendsPerBucketSeq(groupId);
- Config.deploy_mode = "cloud";
- try (MockedStatic<Env> mockedEnv = Mockito.mockStatic(Env.class,
Mockito.CALLS_REAL_METHODS)) {
+ try (MockedStatic<Config> mockedConfig =
Mockito.mockStatic(Config.class, Mockito.CALLS_REAL_METHODS);
+ MockedStatic<Env> mockedEnv = Mockito.mockStatic(Env.class,
Mockito.CALLS_REAL_METHODS)) {
+ mockedConfig.when(Config::isCloudMode).thenReturn(true);
mockedEnv.when(Env::getCurrentColocateIndex).thenReturn(colocateTableIndex);
ProcNodeInterface node = new
ColocationGroupProcDir().lookup(groupId.toString());
ProcResult result = node.fetchResult();
@@ -163,20 +159,18 @@ public class ColocationGroupProcDirTest extends
TestWithFeService {
Assertions.assertTrue(result.getRows().stream().anyMatch(row ->
row.size() == 2 && !row.get(1).isEmpty()));
} finally {
db.registerTable(table1);
- Config.deploy_mode = originDeployMode;
}
}
@Test
public void testCloudColocationGroupReplicaAllocationIsNull() throws
Exception {
- String originDeployMode = Config.deploy_mode;
createTable("CREATE TABLE colocate_t3 (k INT) DISTRIBUTED BY HASH(k)
BUCKETS 2 "
+ "PROPERTIES ('replication_num' = '1', 'colocate_with' =
'g2')");
createTable("CREATE TABLE colocate_t4 (k INT) DISTRIBUTED BY HASH(k)
BUCKETS 2 "
+ "PROPERTIES ('replication_num' = '1', 'colocate_with' =
'g2')");
- Config.deploy_mode = "cloud";
- try {
+ try (MockedStatic<Config> mockedConfig =
Mockito.mockStatic(Config.class, Mockito.CALLS_REAL_METHODS)) {
+ mockedConfig.when(Config::isCloudMode).thenReturn(true);
ProcResult result = new ColocationGroupProcDir().fetchResult();
int groupNameIdx =
ColocationGroupProcDir.TITLE_NAMES.indexOf("GroupName");
int replicaAllocIdx =
ColocationGroupProcDir.TITLE_NAMES.indexOf("ReplicaAllocation");
@@ -185,8 +179,6 @@ public class ColocationGroupProcDirTest extends
TestWithFeService {
.findFirst()
.orElseThrow(() -> new AssertionError("can not find
colocate group test.g2"));
Assertions.assertEquals("null", groupRow.get(replicaAllocIdx));
- } finally {
- Config.deploy_mode = originDeployMode;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]