[CP] [BUG.FIX] fix slow release of memtable
This commit is contained in:
@ -723,6 +723,8 @@ int ObTenantMetaMemMgr::gc_tablet(ObTablet *tablet)
|
|||||||
LOG_WARN("unexpected null tablet pointer", K(ret), K(key), K(ptr_handle));
|
LOG_WARN("unexpected null tablet pointer", K(ret), K(key), K(ptr_handle));
|
||||||
} else if (OB_FAIL(tablet_ptr->remove_tablet_from_old_version_chain(tablet))) {
|
} else if (OB_FAIL(tablet_ptr->remove_tablet_from_old_version_chain(tablet))) {
|
||||||
LOG_WARN("fail to remove tablet from old version chain", K(ret), K(key), KPC(tablet));
|
LOG_WARN("fail to remove tablet from old version chain", K(ret), K(key), KPC(tablet));
|
||||||
|
} else {
|
||||||
|
tablet->reset_memtable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (OB_SUCC(ret) && OB_FAIL(push_tablet_into_gc_queue(tablet))) {
|
if (OB_SUCC(ret) && OB_FAIL(push_tablet_into_gc_queue(tablet))) {
|
||||||
|
|||||||
@ -388,6 +388,7 @@ public:
|
|||||||
// 2. If a tablet may be being accessed, shouldn't call this function.
|
// 2. If a tablet may be being accessed, shouldn't call this function.
|
||||||
int rebuild_memtables(const share::SCN scn);
|
int rebuild_memtables(const share::SCN scn);
|
||||||
|
|
||||||
|
void reset_memtable();
|
||||||
// ATTENTION!!! The following two interfaces only release memtable from memtable manager.
|
// ATTENTION!!! The following two interfaces only release memtable from memtable manager.
|
||||||
int release_memtables(const share::SCN scn);
|
int release_memtables(const share::SCN scn);
|
||||||
// force release all memtables
|
// force release all memtables
|
||||||
@ -809,7 +810,6 @@ private:
|
|||||||
bool exist_memtable_with_end_scn(const ObITable *table, const share::SCN &end_scn);
|
bool exist_memtable_with_end_scn(const ObITable *table, const share::SCN &end_scn);
|
||||||
int assign_memtables(memtable::ObIMemtable * const *memtables, const int64_t memtable_count);
|
int assign_memtables(memtable::ObIMemtable * const *memtables, const int64_t memtable_count);
|
||||||
int assign_ddl_kvs(ObDDLKV * const *ddl_kvs, const int64_t ddl_kv_count);
|
int assign_ddl_kvs(ObDDLKV * const *ddl_kvs, const int64_t ddl_kv_count);
|
||||||
void reset_memtable();
|
|
||||||
int pull_ddl_memtables(ObArenaAllocator &allocator, ObDDLKV **&ddl_kvs_addr, int64_t &ddl_kv_count);
|
int pull_ddl_memtables(ObArenaAllocator &allocator, ObDDLKV **&ddl_kvs_addr, int64_t &ddl_kv_count);
|
||||||
void reset_ddl_memtables();
|
void reset_ddl_memtables();
|
||||||
int wait_release_memtables_();
|
int wait_release_memtables_();
|
||||||
|
|||||||
Reference in New Issue
Block a user