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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]