Fix DBMS_VECTOR refesh_index & rebuild_index for duplicate table
This commit is contained in:
parent
315836473a
commit
a7f49f4f53
@ -725,7 +725,8 @@ public:
|
||||
ObDASTableLoc *&table_loc);
|
||||
bool is_duplicate_table() const { return loc_meta_.is_dup_table_; }
|
||||
bool is_dynamic_replica_select_table() const { return (is_duplicate_table() || get_is_broadcast_table()) &&
|
||||
!is_partitioned(); }
|
||||
!is_partitioned() &&
|
||||
loc_meta_.is_weak_read_; }
|
||||
void set_broadcast_table(const bool is_broadcast_table) {
|
||||
is_broadcast_table_ = is_broadcast_table;
|
||||
}
|
||||
|
@ -958,6 +958,7 @@ int ObVectorRefreshIndexExecutor::do_refresh_with_retry()
|
||||
refresh_ctx.index_id_tb_id_ = index_id_tb_id_;
|
||||
refresh_ctx.refresh_method_ = refresh_method_;
|
||||
refresh_ctx.refresh_threshold_ = refresh_threshold_;
|
||||
int retry_cnt = 0;
|
||||
|
||||
CK(OB_NOT_NULL(ctx_));
|
||||
while (OB_SUCC(ret) && OB_SUCC(ctx_->check_status())) {
|
||||
@ -979,9 +980,11 @@ int ObVectorRefreshIndexExecutor::do_refresh_with_retry()
|
||||
}
|
||||
}
|
||||
if (OB_FAIL(ret)) {
|
||||
if (ObVectorRefreshIndexExecutor::is_refresh_retry_ret_code(ret)) {
|
||||
if (retry_cnt < MAX_REFRESH_RETRY_THRESHOLD &&
|
||||
ObVectorRefreshIndexExecutor::is_refresh_retry_ret_code(ret)) {
|
||||
ret = OB_SUCCESS;
|
||||
refresh_ctx.reuse();
|
||||
++retry_cnt;
|
||||
ob_usleep(1LL * 1000 * 1000);
|
||||
}
|
||||
} else {
|
||||
@ -1045,6 +1048,7 @@ int ObVectorRefreshIndexExecutor::do_rebuild_with_retry()
|
||||
refresh_ctx.idx_parameters_ = idx_parameters_;
|
||||
refresh_ctx.idx_parallel_creation_ = idx_parallel_creation_;
|
||||
refresh_ctx.delta_rate_threshold_ = delta_rate_threshold_;
|
||||
int retry_cnt = 0;
|
||||
|
||||
CK(OB_NOT_NULL(ctx_));
|
||||
while (OB_SUCC(ret) && OB_SUCC(ctx_->check_status())) {
|
||||
@ -1066,9 +1070,11 @@ int ObVectorRefreshIndexExecutor::do_rebuild_with_retry()
|
||||
}
|
||||
}
|
||||
if (OB_FAIL(ret)) {
|
||||
if (ObVectorRefreshIndexExecutor::is_refresh_retry_ret_code(ret)) {
|
||||
if (retry_cnt < MAX_REFRESH_RETRY_THRESHOLD &&
|
||||
ObVectorRefreshIndexExecutor::is_refresh_retry_ret_code(ret)) {
|
||||
ret = OB_SUCCESS;
|
||||
refresh_ctx.reuse();
|
||||
++retry_cnt;
|
||||
ob_usleep(1LL * 1000 * 1000);
|
||||
}
|
||||
} else {
|
||||
|
@ -114,6 +114,8 @@ public:
|
||||
|
||||
class ObVectorRefreshIndexExecutor {
|
||||
public:
|
||||
static const int MAX_REFRESH_RETRY_THRESHOLD = 3;
|
||||
|
||||
enum class VectorIndexAuxType : int8_t {
|
||||
DELTA_BUF_INDEX = 0,
|
||||
INDEX_ID_INDEX = 1,
|
||||
|
Loading…
x
Reference in New Issue
Block a user