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

dataroaring 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 136973d4fae [fix](testcase) add state check for ADD INDEX before BUILD 
INDEX to avoid table state not normal (#25038)
136973d4fae is described below

commit 136973d4faefe8bb05914033bc245b2eaa355f9e
Author: Kang <[email protected]>
AuthorDate: Thu Oct 5 22:15:54 2023 +0800

    [fix](testcase) add state check for ADD INDEX before BUILD INDEX to avoid 
table state not normal (#25038)
---
 .../index_change/test_index_change_3.groovy        | 17 +++++++++++++++++
 .../index_change/test_index_change_4.groovy        | 17 +++++++++++++++++
 .../index_change/test_index_change_6.groovy        | 18 ++++++++++++++++++
 .../index_change/test_index_change_7.groovy        | 18 ++++++++++++++++++
 .../test_index_change_with_compaction.groovy       | 22 ++++++++++++++++++++++
 .../index_change/test_pk_uk_index_change.groovy    | 20 ++++++++++++++++++++
 .../inverted_index_p0/test_build_index.groovy      |  2 ++
 7 files changed, 114 insertions(+)

diff --git 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_3.groovy
 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_3.groovy
index 34a416f0d8f..c2d1d197f9b 100644
--- 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_3.groovy
+++ 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_3.groovy
@@ -22,6 +22,22 @@ suite("test_index_change_3") {
     def delta_time = 1000
     def alter_res = "null"
     def useTime = 0
+
+    def wait_for_latest_op_on_table_finish = { table_name, OpTimeout ->
+        for(int t = delta_time; t <= OpTimeout; t += delta_time){
+            alter_res = sql """SHOW ALTER TABLE COLUMN WHERE TableName = 
"${table_name}" ORDER BY CreateTime DESC LIMIT 1;"""
+            alter_res = alter_res.toString()
+            if(alter_res.contains("FINISHED")) {
+                sleep(3000) // wait change table state to normal
+                logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
+                break
+            }
+            useTime = t
+            sleep(delta_time)
+        }
+        assertTrue(useTime <= OpTimeout, "wait_for_latest_op_on_table_finish 
timeout")
+    }
+
     def wait_for_build_index_on_partition_finish = { table_name, OpTimeout ->
         for(int t = delta_time; t <= OpTimeout; t += delta_time){
             alter_res = sql """SHOW BUILD INDEX WHERE TableName = 
"${table_name}";"""
@@ -94,6 +110,7 @@ suite("test_index_change_3") {
 
     // create inverted index idx_city
     sql """ CREATE INDEX idx_city ON ${tableName}(`city`) USING INVERTED 
PROPERTIES("parser"="english") """
+    wait_for_latest_op_on_table_finish(tableName, timeout)
     // build index
     sql """ BUILD INDEX idx_city ON ${tableName} """
 
diff --git 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_4.groovy
 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_4.groovy
index 6c0dbe463f4..1c19420be0f 100644
--- 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_4.groovy
+++ 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_4.groovy
@@ -22,6 +22,22 @@ suite("test_index_change_4") {
     def delta_time = 1000
     def alter_res = "null"
     def useTime = 0
+
+    def wait_for_latest_op_on_table_finish = { table_name, OpTimeout ->
+        for(int t = delta_time; t <= OpTimeout; t += delta_time){
+            alter_res = sql """SHOW ALTER TABLE COLUMN WHERE TableName = 
"${table_name}" ORDER BY CreateTime DESC LIMIT 1;"""
+            alter_res = alter_res.toString()
+            if(alter_res.contains("FINISHED")) {
+                sleep(3000) // wait change table state to normal
+                logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
+                break
+            }
+            useTime = t
+            sleep(delta_time)
+        }
+        assertTrue(useTime <= OpTimeout, "wait_for_latest_op_on_table_finish 
timeout")
+    }
+
     def wait_for_build_index_on_partition_finish = { table_name, OpTimeout ->
         for(int t = delta_time; t <= OpTimeout; t += delta_time){
             alter_res = sql """SHOW BUILD INDEX WHERE TableName = 
"${table_name}";"""
@@ -97,6 +113,7 @@ suite("test_index_change_4") {
     sql """ DROP INDEX idx_note ON ${tableName} """
     // create inverted index idx_city
     sql """ CREATE INDEX idx_note ON ${tableName}(`note`) USING INVERTED 
PROPERTIES("parser"="english") """
+    wait_for_latest_op_on_table_finish(tableName, timeout)
     // build index
     sql """ BUILD INDEX idx_note ON ${tableName} """
     wait_for_build_index_on_partition_finish(tableName, timeout)
diff --git 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_6.groovy
 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_6.groovy
index 45c68bd7ce9..9a04ebbb47c 100644
--- 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_6.groovy
+++ 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_6.groovy
@@ -22,6 +22,22 @@ suite("test_index_change_6") {
     def delta_time = 1000
     def alter_res = "null"
     def useTime = 0
+
+    def wait_for_latest_op_on_table_finish = { table_name, OpTimeout ->
+        for(int t = delta_time; t <= OpTimeout; t += delta_time){
+            alter_res = sql """SHOW ALTER TABLE COLUMN WHERE TableName = 
"${table_name}" ORDER BY CreateTime DESC LIMIT 1;"""
+            alter_res = alter_res.toString()
+            if(alter_res.contains("FINISHED")) {
+                sleep(3000) // wait change table state to normal
+                logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
+                break
+            }
+            useTime = t
+            sleep(delta_time)
+        }
+        assertTrue(useTime <= OpTimeout, "wait_for_latest_op_on_table_finish 
timeout")
+    }
+
     def wait_for_build_index_on_partition_finish = { table_name, OpTimeout ->
         for(int t = delta_time; t <= OpTimeout; t += delta_time){
             alter_res = sql """SHOW BUILD INDEX WHERE TableName = 
"${table_name}";"""
@@ -100,6 +116,8 @@ suite("test_index_change_6") {
     sql """ CREATE INDEX idx_user_id ON ${tableName}(`user_id`) USING INVERTED 
"""
     sql """ CREATE INDEX idx_note ON ${tableName}(`note`) USING INVERTED 
PROPERTIES("parser" = "english") """
 
+    wait_for_latest_op_on_table_finish(tableName, timeout)
+
     // build inverted index
     sql """ BUILD INDEX idx_user_id ON ${tableName} """
     sql """ BUILD INDEX idx_note ON ${tableName} """
diff --git 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_7.groovy
 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_7.groovy
index b1cbe7080bd..6c08392b4d6 100644
--- 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_7.groovy
+++ 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_7.groovy
@@ -22,6 +22,22 @@ suite("test_index_change_7") {
     def delta_time = 1000
     def alter_res = "null"
     def useTime = 0
+
+    def wait_for_latest_op_on_table_finish = { table_name, OpTimeout ->
+        for(int t = delta_time; t <= OpTimeout; t += delta_time){
+            alter_res = sql """SHOW ALTER TABLE COLUMN WHERE TableName = 
"${table_name}" ORDER BY CreateTime DESC LIMIT 1;"""
+            alter_res = alter_res.toString()
+            if(alter_res.contains("FINISHED")) {
+                sleep(3000) // wait change table state to normal
+                logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
+                break
+            }
+            useTime = t
+            sleep(delta_time)
+        }
+        assertTrue(useTime <= OpTimeout, "wait_for_latest_op_on_table_finish 
timeout")
+    }
+
     def wait_for_build_index_on_partition_finish = { table_name, OpTimeout ->
         for(int t = delta_time; t <= OpTimeout; t += delta_time){
             alter_res = sql """SHOW BUILD INDEX WHERE TableName = 
"${table_name}";"""
@@ -90,6 +106,8 @@ suite("test_index_change_7") {
     sql """ CREATE INDEX c_array_idx ON ${tableName}(`c_array`) USING INVERTED 
PROPERTIES("parser"="english") """
     sql """ CREATE INDEX int_array_idx ON ${tableName}(`int_array`) USING 
INVERTED """
 
+    wait_for_latest_op_on_table_finish(tableName, timeout)
+
     // build inverted index
     sql """ BUILD INDEX c_array_idx ON ${tableName} """
     sql """ BUILD INDEX int_array_idx ON ${tableName} """
diff --git 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_with_compaction.groovy
 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_with_compaction.groovy
index c37f9aa0cdf..b4a42aba237 100644
--- 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_with_compaction.groovy
+++ 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_with_compaction.groovy
@@ -20,6 +20,26 @@ import org.codehaus.groovy.runtime.IOGroovyMethods
 suite("test_index_change_with_compaction") {
     def tableName = "index_change_with_compaction_dup_keys"
 
+    def timeout = 60000
+    def delta_time = 1000
+    def alter_res = "null"
+    def useTime = 0
+
+    def wait_for_latest_op_on_table_finish = { table_name, OpTimeout ->
+        for(int t = delta_time; t <= OpTimeout; t += delta_time){
+            alter_res = sql """SHOW ALTER TABLE COLUMN WHERE TableName = 
"${table_name}" ORDER BY CreateTime DESC LIMIT 1;"""
+            alter_res = alter_res.toString()
+            if(alter_res.contains("FINISHED")) {
+                sleep(3000) // wait change table state to normal
+                logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
+                break
+            }
+            useTime = t
+            sleep(delta_time)
+        }
+        assertTrue(useTime <= OpTimeout, "wait_for_latest_op_on_table_finish 
timeout")
+    }
+
     try {
         
//BackendId,Cluster,IP,HeartbeatPort,BePort,HttpPort,BrpcPort,LastStartTime,LastHeartbeat,Alive,SystemDecommissioned,ClusterDecommissioned,TabletNum,DataUsedCapacity,AvailCapacity,TotalCapacity,UsedPct,MaxDiskUsedPct,Tag,ErrMsg,Version,Status
         String[][] backends = sql """ show backends; """
@@ -119,6 +139,8 @@ suite("test_index_change_with_compaction") {
         sql """ CREATE INDEX idx_date ON ${tableName}(`date`) USING INVERTED 
"""
         sql """ CREATE INDEX idx_city ON ${tableName}(`city`) USING INVERTED 
"""
 
+        wait_for_latest_op_on_table_finish(tableName, timeout)
+
         // trigger compactions for all tablets in ${tableName}
         for (String[] tablet in tablets) {
             String tablet_id = tablet[0]
diff --git 
a/regression-test/suites/inverted_index_p0/index_change/test_pk_uk_index_change.groovy
 
b/regression-test/suites/inverted_index_p0/index_change/test_pk_uk_index_change.groovy
index b74d45c5f3b..7bccbc9f2cb 100644
--- 
a/regression-test/suites/inverted_index_p0/index_change/test_pk_uk_index_change.groovy
+++ 
b/regression-test/suites/inverted_index_p0/index_change/test_pk_uk_index_change.groovy
@@ -31,6 +31,22 @@ suite("test_pk_uk_index_change", "inverted_index") {
     def delta_time = 1000
     def alter_res = "null"
     def useTime = 0
+
+    def wait_for_latest_op_on_table_finish = { table_name, OpTimeout ->
+        for(int t = delta_time; t <= OpTimeout; t += delta_time){
+            alter_res = sql """SHOW ALTER TABLE COLUMN WHERE TableName = 
"${table_name}" ORDER BY CreateTime DESC LIMIT 1;"""
+            alter_res = alter_res.toString()
+            if(alter_res.contains("FINISHED")) {
+                sleep(3000) // wait change table state to normal
+                logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
+                break
+            }
+            useTime = t
+            sleep(delta_time)
+        }
+        assertTrue(useTime <= OpTimeout, "wait_for_latest_op_on_table_finish 
timeout")
+    }
+
     def wait_for_build_index_on_partition_finish = { table_name, OpTimeout ->
         for(int t = delta_time; t <= OpTimeout; t += delta_time){
             alter_res = sql """SHOW BUILD INDEX WHERE TableName = 
"${table_name}";"""
@@ -222,6 +238,9 @@ suite("test_pk_uk_index_change", "inverted_index") {
             sql """ ALTER TABLE ${tableNamePk}
                     ADD INDEX L_ORDERKEY_idx (L_ORDERKEY) USING INVERTED 
COMMENT 'L_ORDERKEY index';
             """
+
+            wait_for_latest_op_on_table_finish(tableNamePk, timeout)
+
             // build inverted index
             sql """ BUILD INDEX L_ORDERKEY_idx ON ${tableNamePk}; """
             wait_for_build_index_on_partition_finish(tableNamePk, timeout)
@@ -302,3 +321,4 @@ suite("test_pk_uk_index_change", "inverted_index") {
         wait_for_build_index_on_partition_finish(tableNamePk, timeout)
     }
 }
+
diff --git a/regression-test/suites/inverted_index_p0/test_build_index.groovy 
b/regression-test/suites/inverted_index_p0/test_build_index.groovy
index d7b63b8d094..87250c2897b 100644
--- a/regression-test/suites/inverted_index_p0/test_build_index.groovy
+++ b/regression-test/suites/inverted_index_p0/test_build_index.groovy
@@ -157,6 +157,8 @@ suite("test_build_index", "inverted_index"){
     // ADD INDEX
     sql """ ALTER TABLE ${tableName} ADD INDEX idx_comment (`comment`) USING 
INVERTED PROPERTIES("parser" = "english") """
 
+    wait_for_latest_op_on_table_finish(tableName, timeout)
+
     // BUILD INDEX and expect state is RUNNING
     sql """ BUILD INDEX idx_comment ON ${tableName} """
     def state = wait_for_last_build_index_on_table_running(tableName, timeout)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to