fix loop bug
This commit is contained in:
@ -129,6 +129,7 @@ public:
|
|||||||
share::SCN get_min_scn() const { return min_scn_; }
|
share::SCN get_min_scn() const { return min_scn_; }
|
||||||
share::SCN get_freeze_scn() const { return freeze_scn_; }
|
share::SCN get_freeze_scn() const { return freeze_scn_; }
|
||||||
share::SCN get_ddl_start_scn() const { return ddl_start_scn_; }
|
share::SCN get_ddl_start_scn() const { return ddl_start_scn_; }
|
||||||
|
share::SCN get_start_scn() const { return last_freezed_scn_; }
|
||||||
int64_t get_macro_block_cnt() const { return block_meta_tree_.get_macro_block_cnt(); }
|
int64_t get_macro_block_cnt() const { return block_meta_tree_.get_macro_block_cnt(); }
|
||||||
void inc_pending_cnt(); // used by ddl kv pending guard
|
void inc_pending_cnt(); // used by ddl kv pending guard
|
||||||
void dec_pending_cnt();
|
void dec_pending_cnt();
|
||||||
|
|||||||
@ -955,13 +955,13 @@ void ObTabletDDLKvMgr::try_get_ddl_kv_unlock(const SCN &scn, ObTableHandleV2 &kv
|
|||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
kv_handle.reset();
|
kv_handle.reset();
|
||||||
if (get_count() > 0) {
|
if (get_count() > 0) {
|
||||||
for (int64_t i = tail_ - 1; OB_SUCC(ret) && i >= head_ && !kv_handle.is_valid(); ++i) {
|
for (int64_t i = tail_ - 1; OB_SUCC(ret) && i >= head_ && !kv_handle.is_valid(); --i) {
|
||||||
ObTableHandleV2 &tmp_kv_handle = ddl_kv_handles_[get_idx(i)];
|
ObTableHandleV2 &tmp_kv_handle = ddl_kv_handles_[get_idx(i)];
|
||||||
ObDDLKV *tmp_kv = static_cast<ObDDLKV *>(tmp_kv_handle.get_table());
|
ObDDLKV *tmp_kv = static_cast<ObDDLKV *>(tmp_kv_handle.get_table());
|
||||||
if (OB_ISNULL(tmp_kv)) {
|
if (OB_ISNULL(tmp_kv)) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("ddl kv is null", K(ret), K(ls_id_), K(tablet_id_), KP(tmp_kv), K(i), K(head_), K(tail_));
|
LOG_WARN("ddl kv is null", K(ret), K(ls_id_), K(tablet_id_), KP(tmp_kv), K(i), K(head_), K(tail_));
|
||||||
} else if (scn <= tmp_kv->get_freeze_scn()) {
|
} else if (scn > tmp_kv->get_start_scn() && scn <= tmp_kv->get_freeze_scn()) {
|
||||||
kv_handle = tmp_kv_handle;
|
kv_handle = tmp_kv_handle;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user