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]