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

airborne pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new 9d65317da47 [Test](build index) enhance build index with clone test 
case with retry logic #42348 (#42364)
9d65317da47 is described below

commit 9d65317da47e38e27c0ed50959779b7da176ab75
Author: airborne12 <airborn...@gmail.com>
AuthorDate: Thu Oct 24 14:04:35 2024 +0800

    [Test](build index) enhance build index with clone test case with retry 
logic #42348 (#42364)
    
    cherry pick from #42348
---
 .../test_build_index_with_clone_fault.groovy       | 32 ++++++++++++++++++++--
 1 file changed, 29 insertions(+), 3 deletions(-)

diff --git 
a/regression-test/suites/fault_injection_p0/test_build_index_with_clone_fault.groovy
 
b/regression-test/suites/fault_injection_p0/test_build_index_with_clone_fault.groovy
index 07fcfbe1a94..156a582f553 100644
--- 
a/regression-test/suites/fault_injection_p0/test_build_index_with_clone_fault.groovy
+++ 
b/regression-test/suites/fault_injection_p0/test_build_index_with_clone_fault.groovy
@@ -53,6 +53,33 @@ suite("test_build_index_with_clone_fault_injection", 
"nonConcurrent"){
         return "wait_timeout"
     }
 
+    def assertShowBuildIndexWithRetry = { tbl, expectedState, expectedMsg, 
maxRetries, waitSeconds ->
+        int attempt = 0
+        while (attempt < maxRetries) {
+            def show_build_index = sql_return_maparray("show build index where 
TableName = \"${tbl}\" ORDER BY JobId DESC LIMIT 1")
+            if (show_build_index && show_build_index.size() > 0) {
+                def currentState = show_build_index[0].State
+                def currentMsg = show_build_index[0].Msg
+                if (currentState == expectedState && currentMsg == 
expectedMsg) {
+                    logger.info("Attempt ${attempt + 1}: State and Msg match 
expected values.")
+                    return
+                } else {
+                    logger.warn("Attempt ${attempt + 1}: Expected 
State='${expectedState}' and Msg='${expectedMsg}', but got 
State='${currentState}' and Msg='${currentMsg}'. Retrying after ${waitSeconds} 
second(s)...")
+                }
+            } else {
+                logger.warn("Attempt ${attempt + 1}: show_build_index is empty 
or null. Retrying after ${waitSeconds} second(s)...")
+            }
+            attempt++
+            if (attempt < maxRetries) {
+                sleep(waitSeconds * 1000)
+            }
+        }
+        def finalBuildIndex = sql_return_maparray("show build index where 
TableName = \"${tbl}\" ORDER BY JobId DESC LIMIT 1")
+        assertTrue(finalBuildIndex && finalBuildIndex.size() > 0, 
"show_build_index is empty or null after ${maxRetries} attempts")
+        assertEquals(expectedState, finalBuildIndex[0].State, "State does not 
match after ${maxRetries} attempts")
+        assertEquals(expectedMsg, finalBuildIndex[0].Msg, "Msg does not match 
after ${maxRetries} attempts")
+    }
+
     def tbl = 'test_build_index_with_clone'
     try {
         GetDebugPoint().enableDebugPointForAllBEs("EngineCloneTask.wait_clone")
@@ -84,9 +111,8 @@ suite("test_build_index_with_clone_fault_injection", 
"nonConcurrent"){
         sql """ build index idx_k2 on ${tbl} """
         // sleep 5s to wait for the build index job report table is unstable
         sleep(5000)
-        def show_build_index = sql_return_maparray("show build index where 
TableName = \"${tbl}\" ORDER BY JobId DESC LIMIT 1")
-        assertEquals('WAITING_TXN', show_build_index[0].State)
-        assertEquals('table is unstable', show_build_index[0].Msg)
+
+        assertShowBuildIndexWithRetry(tbl, 'WAITING_TXN', 'table is unstable', 
3, 5)
 
         def state = wait_for_last_build_index_on_table_finish(tbl, timeout)
         assertEquals(state, "FINISHED")


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

Reply via email to