This is an automated email from the ASF dual-hosted git repository.
airborne pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new c0b2970c200 [Test](build index) enhance build index with clone test
case with retry logic #42348 (#42363)
c0b2970c200 is described below
commit c0b2970c2008e6386c7100f02a435276b1181f59
Author: airborne12 <[email protected]>
AuthorDate: Thu Oct 24 14:06:40 2024 +0800
[Test](build index) enhance build index with clone test case with retry
logic #42348 (#42363)
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 bfbf5a4896e..c1854b40664 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
@@ -50,6 +50,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")
@@ -81,9 +108,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]