[bugfix]: ignore -4018 while calling ObDDLKV::get_ddlmemtable.

This commit is contained in:
Monk-Liu
2024-04-24 10:21:22 +00:00
committed by ob-robot
parent 5de554fc81
commit 3ac857c73e
3 changed files with 14 additions and 4 deletions

View File

@ -1326,10 +1326,14 @@ int ObMultipleMerge::prepare_tables_from_iterator(ObTableStoreIterator &table_it
++memtable_cnt; ++memtable_cnt;
if (table_ptr->is_direct_load_memtable()) { if (table_ptr->is_direct_load_memtable()) {
ObDDLMemtable *ddl_memtable = nullptr; ObDDLMemtable *ddl_memtable = nullptr;
if (OB_FAIL((static_cast<ObDDLKV*>(table_ptr)->get_ddl_memtable(0, ddl_memtable)))) { if (OB_FAIL((static_cast<ObDDLKV*>(table_ptr)->get_first_ddl_memtable(ddl_memtable)))) {
LOG_WARN("fail to get ddl memtable but ignore the failure, return nullpoint", K(ret)); if (ret == OB_ENTRY_NOT_EXIST) {
} else if (OB_ISNULL(ddl_memtable)) { // memtable is null, ignore the ddl_kv
continue; ret = OB_SUCCESS;
continue;
} else {
LOG_WARN("fail to get ddl memtable", K(ret));
}
} else { } else {
target_table_ptr = ddl_memtable; target_table_ptr = ddl_memtable;
} }

View File

@ -1011,6 +1011,11 @@ int ObDDLKV::get_ddl_memtable(const int64_t cg_idx, ObDDLMemtable *&ddl_memtable
return ret; return ret;
} }
int ObDDLKV::get_first_ddl_memtable(ObDDLMemtable *&ddl_memtable)
{
return get_ddl_memtable(0, ddl_memtable);
}
int ObDDLKV::set_macro_block( int ObDDLKV::set_macro_block(
ObTablet &tablet, ObTablet &tablet,
const ObDDLMacroBlock &macro_block, const ObDDLMacroBlock &macro_block,

View File

@ -322,6 +322,7 @@ public:
int64_t get_macro_block_cnt() const { return macro_block_count_; } int64_t get_macro_block_cnt() const { return macro_block_count_; }
int create_ddl_memtable(ObTablet &tablet, const ObITable::TableKey &table_key, ObDDLMemtable *&ddl_memtable); int create_ddl_memtable(ObTablet &tablet, const ObITable::TableKey &table_key, ObDDLMemtable *&ddl_memtable);
int get_ddl_memtable(const int64_t cg_idx, ObDDLMemtable *&ddl_memtable); int get_ddl_memtable(const int64_t cg_idx, ObDDLMemtable *&ddl_memtable);
int get_first_ddl_memtable(ObDDLMemtable *&ddl_memtable);
ObIArray<ObDDLMemtable *> &get_ddl_memtables() { return ddl_memtables_; } ObIArray<ObDDLMemtable *> &get_ddl_memtables() { return ddl_memtables_; }
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();