You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by hu...@apache.org on 2026/10/14 14:42:24 UTC

(doris) branch master updated: [Fix](test) Isolate profile manager in cloud insert retry tests (#69015)

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

924060929 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 25a15f932a2 [Fix](test) Isolate profile manager in cloud insert retry tests (#69015)
25a15f932a2 is described below

commit 25a15f932a2f5cf0c92f82bddcf962ac5a8bf5b2
Author: linrrarity <li...@selectdb.com>
AuthorDate: Wed Oct 14 22:42:16 2026 +0800

    [Fix](test) Isolate profile manager in cloud insert retry tests (#69015)
    
    ### What problem does this PR solve?
    
    Related PR: #68658
    
    Problem Summary:
    
    CloudInsertProfileRetryTest uses the ProfileManager singleton, which
    starts a periodic storage thread. After an INSERT retry succeeds, this
    thread can persist the finished profile and clear its execution profiles
    before the test assertions run, causing intermittent failures.
    
    Use a dedicated ProfileManager without starting its periodic thread and
    redirect singleton access through a scoped static mock. Preserve the
    explicit background storage probe to verify that profiles remain
    ineligible for storage while the outer retry decision is pending.
---
 .../plans/commands/insert/CloudInsertProfileRetryTest.java | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/commands/insert/CloudInsertProfileRetryTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/commands/insert/CloudInsertProfileRetryTest.java
index 56e0d267c85..b32328a67fd 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/commands/insert/CloudInsertProfileRetryTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/commands/insert/CloudInsertProfileRetryTest.java
@@ -87,6 +87,16 @@ public class CloudInsertProfileRetryTest extends TestWithFeService {
             "MERGE_SUCCESS_EMPTY_WITH_SESSION_REVERT"})
     @ResourceLock("global")
     public void testInsertProfileRemainsOpenUntilOuterRetryDecision(String caseName, @TempDir Path storage) throws Exception {
+        // Keep the periodic storage thread from releasing the finished profile before assertions.
+        // The explicit backgroundStorage probe below still exercises storage eligibility during retry.
+        ProfileManager manager = new TestProfileManager();
+        try (MockedStatic<ProfileManager> managers = Mockito.mockStatic(ProfileManager.class)) {
+            managers.when(ProfileManager::getInstance).thenReturn(manager);
+            runInsertProfileRetryCase(caseName, storage, manager);
+        }
+    }
+
+    private void runInsertProfileRetryCase(String caseName, Path storage, ProfileManager manager) throws Exception {
         boolean merge = caseName.startsWith("MERGE_");
         String outcome = merge ? caseName.substring("MERGE_".length()) : caseName;
         boolean realExecution = merge && "SUCCESS_EMPTY_WITH_SESSION_REVERT".equals(outcome);
@@ -127,7 +137,6 @@ public class CloudInsertProfileRetryTest extends TestWithFeService {
             executor.setParsedStmt(adapter);
         }
         Profile profile = executor.getProfile();
-        ProfileManager manager = ProfileManager.getInstance();
         NereidsPlanner planner = Mockito.mock(NereidsPlanner.class);
         Mockito.when(planner.getPhysicalRelations()).thenReturn(Collections.emptyList());
         OlapTable table = Mockito.mock(OlapTable.class);
@@ -400,6 +409,9 @@ public class CloudInsertProfileRetryTest extends TestWithFeService {
         }
     }
 
+    private static class TestProfileManager extends ProfileManager {
+    }
+
     private static TQueryProfile completeBackendReport(TUniqueId queryId) {
         TRuntimeProfileNode pipeline = new TRuntimeProfileNode();
         pipeline.setName("Pipeline 0");


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org