Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 3 commits into from
Oct 5, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix other testcase
  • Loading branch information
xiaokang committed Oct 3, 2023
commit 9fc3125b435f4e1af0cfd20aa2474ce10ca39f0a
Original file line number Diff line number Diff line change
Expand Up @@ -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}";"""
Expand Down Expand Up @@ -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} """

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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}";"""
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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}";"""
Expand Down Expand Up @@ -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} """
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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}";"""
Expand Down Expand Up @@ -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} """
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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; """
Expand Down Expand Up @@ -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]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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}";"""
Expand Down Expand Up @@ -223,26 +239,7 @@ suite("test_pk_uk_index_change", "inverted_index") {
ADD INDEX L_ORDERKEY_idx (L_ORDERKEY) USING INVERTED COMMENT 'L_ORDERKEY index';
"""

return jobStateResult[0][9]

def jobStateResult = '';
def res = ''

int max_try_secs = 60
while (max_try_secs--) {
jobStateResult = sql """ SHOW ALTER TABLE COLUMN WHERE TableName='${tableNamePk}' ORDER BY createtime DESC LIMIT 1 """
res = jobStateResult[0][9]
if (res == "FINISHED" || res == "CANCELLED") {
assertEquals("FINISHED", res)
break
} else {
Thread.sleep(1000)
if (max_try_secs < 1) {
println "test timeout," + "state:" + res
assertEquals("FINISHED", res)
}
}
}
wait_for_latest_op_on_table_finish(tableNamePk, timeout)

// build inverted index
sql """ BUILD INDEX L_ORDERKEY_idx ON ${tableNamePk}; """
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down