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

yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new cf24b571a30 [Pick 2.1](inverted index) fix writer searcher cache fd 
leak(#32564) #32812
cf24b571a30 is described below

commit cf24b571a3055e63f8184c184bca87a50aff757a
Author: airborne12 <airborn...@gmail.com>
AuthorDate: Tue Mar 26 13:58:36 2024 +0800

    [Pick 2.1](inverted index) fix writer searcher cache fd leak(#32564) #32812
---
 .../segment_v2/inverted_index_file_writer.cpp      |  2 +
 .../rowset/segment_v2/inverted_index_writer.cpp    | 23 -------
 .../index_change/test_index_change_1.groovy        |  2 +-
 .../index_change/test_index_change_2.groovy        |  3 +-
 .../index_change/test_index_change_3.groovy        |  7 +-
 .../index_change/test_index_change_4.groovy        |  3 +-
 .../test_index_change_with_compaction.groovy       |  5 +-
 .../index_change/test_pk_uk_index_change.groovy    |  2 +-
 .../inverted_index_p0/test_add_drop_index.groovy   |  2 +-
 .../inverted_index_p0/test_array_index.groovy      | 16 +++++
 .../inverted_index_p0/test_build_index.groovy      | 78 +++++++++++++---------
 .../inverted_index_p0/test_create_index_1.groovy   |  3 +-
 .../inverted_index_p0/test_create_index_2.groovy   |  4 +-
 .../inverted_index_p0/test_create_index_3.groovy   | 20 +++++-
 .../suites/inverted_index_p0/test_show_data.groovy | 11 ++-
 15 files changed, 110 insertions(+), 71 deletions(-)

diff --git a/be/src/olap/rowset/segment_v2/inverted_index_file_writer.cpp 
b/be/src/olap/rowset/segment_v2/inverted_index_file_writer.cpp
index 0ae8a1d7af5..9714480318e 100644
--- a/be/src/olap/rowset/segment_v2/inverted_index_file_writer.cpp
+++ b/be/src/olap/rowset/segment_v2/inverted_index_file_writer.cpp
@@ -20,8 +20,10 @@
 #include "common/status.h"
 #include "io/fs/file_writer.h"
 #include "io/fs/local_file_system.h"
+#include "olap/rowset/segment_v2/inverted_index_cache.h"
 #include "olap/rowset/segment_v2/inverted_index_desc.h"
 #include "olap/rowset/segment_v2/inverted_index_fs_directory.h"
+#include "olap/rowset/segment_v2/inverted_index_reader.h"
 #include "olap/tablet_schema.h"
 #include "runtime/exec_env.h"
 
diff --git a/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp 
b/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp
index 0c628f06513..54f3feb3c5d 100644
--- a/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp
+++ b/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp
@@ -47,11 +47,9 @@
 #include "olap/olap_common.h"
 #include "olap/rowset/segment_v2/common.h"
 #include 
"olap/rowset/segment_v2/inverted_index/char_filter/char_filter_factory.h"
-#include "olap/rowset/segment_v2/inverted_index_cache.h"
 #include "olap/rowset/segment_v2/inverted_index_desc.h"
 #include "olap/rowset/segment_v2/inverted_index_file_writer.h"
 #include "olap/rowset/segment_v2/inverted_index_fs_directory.h"
-#include "olap/rowset/segment_v2/inverted_index_reader.h"
 #include "olap/tablet_schema.h"
 #include "olap/types.h"
 #include "runtime/collection_value.h"
@@ -109,27 +107,6 @@ public:
     void close() {
         if (_index_writer) {
             _index_writer->close();
-            if (config::enable_write_index_searcher_cache) {
-                // open index searcher into cache
-                auto mem_tracker =
-                        
std::make_unique<MemTracker>("InvertedIndexSearcherCacheWithRead");
-                auto index_file_path = 
_index_file_writer->get_index_file_path(_index_meta);
-                auto index_tmp_dir = _dir->getDirName();
-                InvertedIndexSearcherCache::CacheKey 
searcher_cache_key(index_file_path);
-
-                auto* dir = 
DorisFSDirectoryFactory::getDirectory(_index_file_writer->get_fs(),
-                                                                  
index_tmp_dir.c_str());
-                IndexSearcherPtr searcher;
-                auto st = InvertedIndexReader::create_index_searcher(
-                        dir, &searcher, mem_tracker.get(), 
InvertedIndexReaderType::FULLTEXT);
-                if (UNLIKELY(!st.ok())) {
-                    LOG(ERROR) << "insert inverted index searcher cache 
error:" << st;
-                    return;
-                }
-                auto* cache_value = new InvertedIndexSearcherCache::CacheValue(
-                        std::move(searcher), mem_tracker->consumption(), 
UnixMillis());
-                
InvertedIndexSearcherCache::instance()->insert(searcher_cache_key, cache_value);
-            }
         }
     }
 
diff --git 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_1.groovy
 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_1.groovy
index b9713f016e4..decd075b8fb 100644
--- 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_1.groovy
+++ 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_1.groovy
@@ -27,7 +27,7 @@ suite("test_index_change_1") {
             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
+                sleep(10000) // wait change table state to normal
                 logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
                 break
             }
diff --git 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_2.groovy
 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_2.groovy
index 5c43bda26be..2c3cc561979 100644
--- 
a/regression-test/suites/inverted_index_p0/index_change/test_index_change_2.groovy
+++ 
b/regression-test/suites/inverted_index_p0/index_change/test_index_change_2.groovy
@@ -28,7 +28,7 @@ suite("test_index_change_2") {
             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
+                sleep(10000) // wait change table state to normal
                 logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
                 break
             }
@@ -50,6 +50,7 @@ suite("test_index_change_2") {
                 }
             }
             if (finished_num == expected_finished_num) {
+                sleep(10000)
                 logger.info(table_name + " all build index jobs finished, 
detail: " + alter_res)
                 break
             }
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 f4a4cd76d6b..0da4f8bee24 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
@@ -28,7 +28,7 @@ suite("test_index_change_3") {
             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
+                sleep(10000) // wait change table state to normal
                 logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
                 break
             }
@@ -50,6 +50,7 @@ suite("test_index_change_3") {
                 }
             }
             if (finished_num == expected_finished_num) {
+                sleep(10000)
                 logger.info(table_name + " all build index jobs finished, 
detail: " + alter_res)
                 break
             }
@@ -119,7 +120,7 @@ suite("test_index_change_3") {
     sql """ DROP INDEX idx_city ON ${tableName} """
     wait_for_latest_op_on_table_finish(tableName, timeout)
     sql """ DROP INDEX idx_note ON ${tableName} """
-    wait_for_build_index_on_partition_finish(tableName, timeout)
+    wait_for_latest_op_on_table_finish(tableName, timeout)
 
     def show_result = sql "show index from ${tableName}"
     logger.info("show index from " + tableName + " result: " + show_result)
@@ -192,7 +193,7 @@ suite("test_index_change_3") {
     sql """ DROP INDEX idx_city ON ${tableName} """
     wait_for_latest_op_on_table_finish(tableName, timeout)
     sql """ DROP INDEX idx_note ON ${tableName} """
-    wait_for_build_index_on_partition_finish(tableName, timeout)
+    wait_for_latest_op_on_table_finish(tableName, timeout)
 
     show_result = sql "show index from ${tableName}"
     logger.info("show index from " + tableName + " result: " + show_result)
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 626f4c7f70e..46d09c7db6f 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
@@ -28,7 +28,7 @@ suite("test_index_change_4") {
             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
+                sleep(10000) // wait change table state to normal
                 logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
                 break
             }
@@ -50,6 +50,7 @@ suite("test_index_change_4") {
                 }
             }
             if (finished_num == expected_finished_num) {
+                sleep(10000)
                 logger.info(table_name + " all build index jobs finished, 
detail: " + alter_res)
                 break
             }
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 b32ae0df925..7dbd714294e 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
@@ -30,7 +30,7 @@ suite("test_index_change_with_compaction") {
             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
+                sleep(10000) // wait change table state to normal
                 logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
                 break
             }
@@ -136,9 +136,10 @@ suite("test_index_change_with_compaction") {
 
         // create inverted index
         sql """ CREATE INDEX idx_user_id ON ${tableName}(`user_id`) USING 
INVERTED """
+        wait_for_latest_op_on_table_finish(tableName, timeout)
         sql """ CREATE INDEX idx_date ON ${tableName}(`date`) USING INVERTED 
"""
+        wait_for_latest_op_on_table_finish(tableName, timeout)
         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}
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 e7b9aee13d0..32bee13dc81 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
@@ -37,7 +37,7 @@ suite("test_pk_uk_index_change", "inverted_index") {
             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
+                sleep(10000) // wait change table state to normal
                 logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
                 break
             }
diff --git 
a/regression-test/suites/inverted_index_p0/test_add_drop_index.groovy 
b/regression-test/suites/inverted_index_p0/test_add_drop_index.groovy
index 540539dbf2f..cec61f4c932 100644
--- a/regression-test/suites/inverted_index_p0/test_add_drop_index.groovy
+++ b/regression-test/suites/inverted_index_p0/test_add_drop_index.groovy
@@ -27,7 +27,7 @@ suite("test_add_drop_index", "inverted_index"){
             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
+                sleep(10000) // wait change table state to normal
                 logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
                 break
             }
diff --git a/regression-test/suites/inverted_index_p0/test_array_index.groovy 
b/regression-test/suites/inverted_index_p0/test_array_index.groovy
index dc4c1bc663a..b2009f7b622 100644
--- a/regression-test/suites/inverted_index_p0/test_array_index.groovy
+++ b/regression-test/suites/inverted_index_p0/test_array_index.groovy
@@ -24,6 +24,21 @@ suite("test_array_index1"){
     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(10000) // 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 indexTblName = "test_array_index"
 
     sql "DROP TABLE IF EXISTS ${indexTblName}"
@@ -65,6 +80,7 @@ suite("test_array_index1"){
     sql """ INSERT INTO `${indexTblName}`(`apply_date`, `id`, `inventors`) 
VALUES ('2019-01-01', 'ee27ee1da291e46403c408e220bed6e1', '[\"y\"]'); """
 
     sql """ ALTER TABLE ${indexTblName} ADD INDEX 
index_inverted_inventors(inventors) USING INVERTED  COMMENT ''; """
+    wait_for_latest_op_on_table_finish(indexTblName, timeout)
 
     sql """ BUILD INDEX index_inverted_inventors ON ${indexTblName}; """
 }
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 30d79943d62..63de0db38b4 100644
--- a/regression-test/suites/inverted_index_p0/test_build_index.groovy
+++ b/regression-test/suites/inverted_index_p0/test_build_index.groovy
@@ -18,7 +18,7 @@
 
 suite("test_build_index", "inverted_index"){
     // prepare test table
-    def timeout = 60000
+    def timeout = 300000
     def delta_time = 1000
     def alter_res = "null"
     def useTime = 0
@@ -28,7 +28,7 @@ suite("test_build_index", "inverted_index"){
             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
+                sleep(10000) // wait change table state to normal
                 logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
                 break
             }
@@ -50,6 +50,7 @@ suite("test_build_index", "inverted_index"){
                 }
             }
             if (finished_num == expected_finished_num) {
+                sleep(10000) // wait change table state to normal
                 logger.info(table_name + " all build index jobs finished, 
detail: " + alter_res)
                 break
             }
@@ -63,9 +64,14 @@ suite("test_build_index", "inverted_index"){
         for(int t = delta_time; t <= OpTimeout; t += delta_time){
             alter_res = sql """SHOW BUILD INDEX WHERE TableName = 
"${table_name}" ORDER BY JobId """
 
+            if (alter_res.size() == 0) {
+                logger.info(table_name + " last index job finished")
+                return "SKIPPED"
+            }
             if (alter_res.size() > 0) {
                 def last_job_state = alter_res[alter_res.size()-1][7];
                 if (last_job_state == "FINISHED" || last_job_state == 
"CANCELLED") {
+                    sleep(10000) // wait change table state to normal
                     logger.info(table_name + " last index job finished, state: 
" + last_job_state + ", detail: " + alter_res)
                     return last_job_state;
                 }
@@ -82,6 +88,10 @@ suite("test_build_index", "inverted_index"){
         for(int t = delta_time; t <= OpTimeout; t += delta_time){
             alter_res = sql """SHOW BUILD INDEX WHERE TableName = 
"${table_name}" ORDER BY JobId """
 
+            if (alter_res.size() == 0) {
+                logger.info(table_name + " last index job finished")
+                return "SKIPPED"
+            }
             if (alter_res.size() > 0) {
                 def last_job_state = alter_res[alter_res.size()-1][7];
                 if (last_job_state == "RUNNING") {
@@ -168,36 +178,38 @@ suite("test_build_index", "inverted_index"){
     // 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)
-    def result = sql """ SHOW BUILD INDEX WHERE TableName = "${tableName}" 
ORDER BY JobId """
-    assertEquals(result[result.size()-1][1], tableName)
-    assertTrue(result[result.size()-1][3].contains("ADD INDEX"))
-    assertEquals(result[result.size()-1][7], "RUNNING")
-
-    // CANCEL BUILD INDEX and expect state is CANCELED
-    sql """ CANCEL BUILD INDEX ON ${tableName} (${result[result.size()-1][0]}) 
"""
-    result = sql """ SHOW BUILD INDEX WHERE TableName = "${tableName}" ORDER 
BY JobId """
-    assertEquals(result[result.size()-1][1], tableName)
-    assertTrue(result[result.size()-1][3].contains("ADD INDEX"))
-    assertEquals(result[result.size()-1][7], "CANCELLED")
-    assertEquals(result[result.size()-1][8], "user cancelled")
-
-    // BUILD INDEX and expect state is FINISHED
-    sql """ BUILD INDEX idx_comment ON ${tableName}; """
-    state = wait_for_last_build_index_on_table_finish(tableName, timeout)
-    assertEquals(state, "FINISHED")
-
-    // CANCEL BUILD INDEX in FINISHED state and expect exception
-    def success = false;
-    try {
-        sql """ CANCEL BUILD INDEX ON ${tableName}; """
-        success = true
-    } catch(Exception ex) {
-        logger.info(" CANCEL BUILD INDEX ON ${tableName} exception: " + ex)
-    }
-    assertFalse(success)
+    if (state != "SKIPPED") {
+        def result = sql """ SHOW BUILD INDEX WHERE TableName = "${tableName}" 
ORDER BY JobId """
+        assertEquals(result[result.size()-1][1], tableName)
+        assertTrue(result[result.size()-1][3].contains("ADD INDEX"))
+        assertEquals(result[result.size()-1][7], "RUNNING")
+
+        // CANCEL BUILD INDEX and expect state is CANCELED
+        sql """ CANCEL BUILD INDEX ON ${tableName} 
(${result[result.size()-1][0]}) """
+        result = sql """ SHOW BUILD INDEX WHERE TableName = "${tableName}" 
ORDER BY JobId """
+        assertEquals(result[result.size()-1][1], tableName)
+        assertTrue(result[result.size()-1][3].contains("ADD INDEX"))
+        assertEquals(result[result.size()-1][7], "CANCELLED")
+        assertEquals(result[result.size()-1][8], "user cancelled")
+
+        // BUILD INDEX and expect state is FINISHED
+        sql """ BUILD INDEX idx_comment ON ${tableName}; """
+        state = wait_for_last_build_index_on_table_finish(tableName, timeout)
+        assertEquals(state, "FINISHED")
+
+        // CANCEL BUILD INDEX in FINISHED state and expect exception
+        def success = false;
+        try {
+            sql """ CANCEL BUILD INDEX ON ${tableName}; """
+            success = true
+        } catch(Exception ex) {
+            logger.info(" CANCEL BUILD INDEX ON ${tableName} exception: " + ex)
+        }
+        assertFalse(success)
 
-    // BUILD INDEX again and expect state is FINISHED
-    sql """ BUILD INDEX idx_comment ON ${tableName}; """
-    state = wait_for_last_build_index_on_table_finish(tableName, timeout)
-    assertEquals(state, "FINISHED")
+        // BUILD INDEX again and expect state is FINISHED
+        sql """ BUILD INDEX idx_comment ON ${tableName}; """
+        state = wait_for_last_build_index_on_table_finish(tableName, timeout)
+        assertEquals(state, "FINISHED")
+    }
 }
diff --git 
a/regression-test/suites/inverted_index_p0/test_create_index_1.groovy 
b/regression-test/suites/inverted_index_p0/test_create_index_1.groovy
index e2ba1609dbc..65f9b57aed2 100644
--- a/regression-test/suites/inverted_index_p0/test_create_index_1.groovy
+++ b/regression-test/suites/inverted_index_p0/test_create_index_1.groovy
@@ -27,7 +27,7 @@ suite("test_create_index_1", "inverted_index"){
             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
+                sleep(10000) // wait change table state to normal
                 logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
                 break
             }
@@ -140,6 +140,7 @@ suite("test_create_index_1", "inverted_index"){
 
     // case 2: alter add index
     sql "create index studentInfo_idx on ${indexTbName1}(studentInfo) using 
inverted"
+    wait_for_latest_op_on_table_finish(indexTbName1, timeout)
     show_result = sql "show index from ${indexTbName1}"
     logger.info("show index from " + indexTbName1 + " result: " + show_result)
     assertEquals(show_result[0][2], "studentInfo_idx")
diff --git 
a/regression-test/suites/inverted_index_p0/test_create_index_2.groovy 
b/regression-test/suites/inverted_index_p0/test_create_index_2.groovy
index a9aa6169713..b7db6e843fc 100644
--- a/regression-test/suites/inverted_index_p0/test_create_index_2.groovy
+++ b/regression-test/suites/inverted_index_p0/test_create_index_2.groovy
@@ -27,7 +27,7 @@ suite("test_create_index_2", "inverted_index"){
             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
+                sleep(10000) // wait change table state to normal
                 logger.info(table_name + " latest alter job finished, detail: 
" + alter_res)
                 break
             }
@@ -122,6 +122,7 @@ suite("test_create_index_2", "inverted_index"){
     sql "drop index name_idx_1 on ${indexTbName1}"
     wait_for_latest_op_on_table_finish(indexTbName1, timeout)
     sql "drop index name_idx_2 on ${indexTbName1}"
+    wait_for_latest_op_on_table_finish(indexTbName1, timeout)
     show_result = sql "show index from ${indexTbName1}"
     assertEquals(show_result.size(), 0)
 
@@ -129,6 +130,7 @@ suite("test_create_index_2", "inverted_index"){
     sql """
         create index name_idx on ${indexTbName1}(name) using inverted 
properties("parser" = "english") comment 'name index';
     """
+    wait_for_latest_op_on_table_finish(indexTbName1, timeout)
     show_result = sql "show index from ${indexTbName1}"
     logger.info("show index from " + indexTbName1 + " result: " + show_result)
     assertEquals(show_result[0][2], "name_idx")
diff --git 
a/regression-test/suites/inverted_index_p0/test_create_index_3.groovy 
b/regression-test/suites/inverted_index_p0/test_create_index_3.groovy
index 10e7a4a5a7d..720400412c9 100644
--- a/regression-test/suites/inverted_index_p0/test_create_index_3.groovy
+++ b/regression-test/suites/inverted_index_p0/test_create_index_3.groovy
@@ -18,8 +18,25 @@
 
 suite("test_create_index_3", "inverted_index"){
     // prepare test table
+    def timeout = 60000
+    def delta_time = 1000
+    def alter_res = "null"
+    def useTime = 0
     def indexTbName1 = "test_create_index_3"
-
+    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(10000) // 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")
+    }
     sql "DROP TABLE IF EXISTS ${indexTbName1}"
     // case 1: create table with index
     def create_index_result = "fail"
@@ -65,6 +82,7 @@ suite("test_create_index_3", "inverted_index"){
             create index name_idx on ${indexTbName1}(name) using inverted 
properties("parser" = "english") comment 'name index';
         """
     
+    wait_for_latest_op_on_table_finish(indexTbName1, timeout)
     def show_result = sql "show index from ${indexTbName1}"
     logger.info("show index from " + indexTbName1 + " result: " + show_result)
     assertEquals(show_result.size(), 1)
diff --git a/regression-test/suites/inverted_index_p0/test_show_data.groovy 
b/regression-test/suites/inverted_index_p0/test_show_data.groovy
index b2f29f0dd36..838d0ec4cd0 100644
--- a/regression-test/suites/inverted_index_p0/test_show_data.groovy
+++ b/regression-test/suites/inverted_index_p0/test_show_data.groovy
@@ -137,6 +137,9 @@ suite("test_show_data", "p0") {
         for(int t = delta_time; t <= OpTimeout; t += delta_time){
             def alter_res = sql """SHOW BUILD INDEX WHERE TableName = 
"${table_name}" ORDER BY JobId """
 
+            if (alter_res.size() == 0) {
+                return "FINISHED"
+            }
             if (alter_res.size() > 0) {
                 def last_job_state = alter_res[alter_res.size()-1][7];
                 if (last_job_state == "FINISHED" || last_job_state == 
"CANCELLED") {
@@ -165,7 +168,6 @@ suite("test_show_data", "p0") {
         sql """ ALTER TABLE ${testTableWithoutIndex} ADD INDEX idx_request 
(`request`) USING INVERTED PROPERTIES("parser" = "english") """
         wait_for_latest_op_on_table_finish(testTableWithoutIndex, timeout)
 
-        // BUILD INDEX and expect state is RUNNING
         sql """ BUILD INDEX idx_request ON ${testTableWithoutIndex} """
         def state = 
wait_for_last_build_index_on_table_finish(testTableWithoutIndex, timeout)
         assertEquals(state, "FINISHED")
@@ -309,6 +311,9 @@ suite("test_show_data_for_bkd", "p0") {
         for(int t = delta_time; t <= OpTimeout; t += delta_time){
             def alter_res = sql """SHOW BUILD INDEX WHERE TableName = 
"${table_name}" ORDER BY JobId """
 
+            if (alter_res.size() == 0) {
+                return "FINISHED"
+            }
             if (alter_res.size() > 0) {
                 def last_job_state = alter_res[alter_res.size()-1][7];
                 if (last_job_state == "FINISHED" || last_job_state == 
"CANCELLED") {
@@ -319,7 +324,6 @@ suite("test_show_data_for_bkd", "p0") {
             useTime = t
             Thread.sleep(delta_time)
         }
-        logger.info("wait_for_last_build_index_on_table_finish debug: " + 
alter_res)
         assertTrue(useTime <= OpTimeout, 
"wait_for_last_build_index_on_table_finish timeout, useTime=${useTime}")
         return "wait_timeout"
     }
@@ -482,6 +486,9 @@ suite("test_show_data_multi_add", "p0") {
         for(int t = delta_time; t <= OpTimeout; t += delta_time){
             def alter_res = sql """SHOW BUILD INDEX WHERE TableName = 
"${table_name}" ORDER BY JobId """
 
+            if (alter_res.size() == 0) {
+                return "FINISHED"
+            }
             if (alter_res.size() > 0) {
                 def last_job_state = alter_res[alter_res.size()-1][7];
                 if (last_job_state == "FINISHED" || last_job_state == 
"CANCELLED") {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to