Skip to content

Commit

Permalink
[Test](build index) enhance build index case for finished state (apac…
Browse files Browse the repository at this point in the history
…he#42630)

## Proposed changes

Fix case error as below
```
Exception in fault_injection_p0/test_build_index_with_clone_fault.groovy(line 76):

                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")
^^^^^^^^^^^^^^^^^^^^^^^^^^ERROR LINE^^^^^^^^^^^^^^^^^^^^^^^^^^
        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")
        logger.info("add debug point EngineCloneTask.wait_clone")
        sql """ DROP TABLE IF EXISTS ${tbl} """
        sql """
            CREATE TABLE ${tbl} (

Exception:
org.opentest4j.AssertionFailedError: State does not match after 3 attempts ==> expected: <WAITING_TXN> but was: <FINISHED>
```
  • Loading branch information
airborne12 authored Oct 28, 2024
1 parent f3c129d commit 1cbee7a
Showing 1 changed file with 3 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ suite("test_build_index_with_clone_fault_injection", "nonConcurrent"){
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.")
if ((currentState == expectedState && currentMsg == expectedMsg) || currentState == "FINISHED") {
logger.info(currentState+" "+currentMsg)
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)...")
Expand Down Expand Up @@ -109,10 +109,8 @@ suite("test_build_index_with_clone_fault_injection", "nonConcurrent"){
// create index on table
sql """ create index idx_k2 on ${tbl}(k2) using inverted """
sql """ build index idx_k2 on ${tbl} """
// sleep 5s to wait for the build index job report table is unstable
sleep(5000)

assertShowBuildIndexWithRetry(tbl, 'WAITING_TXN', 'table is unstable', 3, 5)
assertShowBuildIndexWithRetry(tbl, 'WAITING_TXN', 'table is unstable', 3, 10)

def state = wait_for_last_build_index_on_table_finish(tbl, timeout)
assertEquals(state, "FINISHED")
Expand Down

0 comments on commit 1cbee7a

Please sign in to comment.