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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]