[fix](testcase) add state check for ADD INDEX before BUILD INDEX to avoid table state not normal (#25038)

This commit is contained in:
Kang
2023-10-05 22:15:54 +08:00
committed by GitHub
parent c2b46e4df7
commit 136973d4fa
7 changed files with 114 additions and 0 deletions

View File

@ -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} """

View File

@ -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)

View File

@ -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} """

View File

@ -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} """

View File

@ -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]

View File

@ -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)
}
}

View File

@ -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)