[memtable_mgr] ObTabletMemtableMgr memtable management

This commit is contained in:
obdev
2024-02-07 00:40:36 +00:00
committed by ob-robot
parent ef5677227a
commit 7e34854bc6
31 changed files with 837 additions and 425 deletions

View File

@ -17,6 +17,7 @@
#include "storage/memtable/ob_multi_source_data.h"
#include "storage/tablet/ob_tablet.h"
#include "storage/meta_mem/ob_tenant_meta_mem_mgr.h"
#include "storage/tx_storage/ob_ls_service.h"
using namespace oceanbase::share;
using namespace oceanbase::memtable;
@ -205,6 +206,31 @@ int ObIMemtableMgr::release_memtables()
return ret;
}
int ObIMemtableMgr::init(
const ObLSID &ls_id,
const ObTabletID &tablet_id,
lib::Worker::CompatMode compat_mode)
{
int ret = OB_SUCCESS;
ObLS *ls = nullptr;
ObLSService *ls_service = nullptr;
ObLSHandle ls_handle;
ObTenantMetaMemMgr *t3m = MTL(ObTenantMetaMemMgr*);
if (OB_ISNULL(ls_service = MTL(ObLSService*))) {
ret = OB_ERR_UNEXPECTED;
STORAGE_LOG(WARN, "failed to get ObLSService from MTL", KR(ret), KPC(ls_service));
} else if (OB_FAIL(ls_service->get_ls(ls_id, ls_handle, ObLSGetMod::TABLET_MOD))) {
STORAGE_LOG(WARN, "failed to get ls", KR(ret), K(ls_id));
} else if (OB_ISNULL(ls = ls_handle.get_ls())) {
ret = OB_ERR_UNEXPECTED;
STORAGE_LOG(WARN, "ls should not be NULL", KR(ret), KP(ls));
} else if (OB_FAIL(init(tablet_id, ls_id, 0, 0, compat_mode,
ls->get_log_handler(), ls->get_freezer(), t3m))) {
STORAGE_LOG(WARN, "failed to init memtable mgr", KR(ret), K(tablet_id), K(ls_id));
}
return ret;
}
int ObIMemtableMgr::init(
const ObTabletID &tablet_id,
const share::ObLSID &ls_id,
@ -345,7 +371,7 @@ ObMemtableMgrHandle::ObMemtableMgrHandle()
{
}
ObMemtableMgrHandle::ObMemtableMgrHandle(ObIMemtableMgr *memtable_mgr, ObITenantMetaObjPool *pool)
ObMemtableMgrHandle::ObMemtableMgrHandle(ObIMemtableMgr *memtable_mgr, ObTabletMemtableMgrPool *pool)
: memtable_mgr_(memtable_mgr),
pool_(pool)
{
@ -373,7 +399,7 @@ void ObMemtableMgrHandle::reset()
memtable_mgr_ = nullptr;
} else {
if (0 == memtable_mgr_->dec_ref()) {
pool_->free_obj(static_cast<void *>(memtable_mgr_));
pool_->release(static_cast<ObTabletMemtableMgr*>(memtable_mgr_));
}
memtable_mgr_ = nullptr;
pool_ = nullptr;
@ -399,7 +425,7 @@ ObMemtableMgrHandle &ObMemtableMgrHandle::operator= (const ObMemtableMgrHandle &
return *this;
}
int ObMemtableMgrHandle::set_memtable_mgr(ObIMemtableMgr *memtable_mgr, ObITenantMetaObjPool *pool)
int ObMemtableMgrHandle::set_memtable_mgr(ObIMemtableMgr *memtable_mgr, ObTabletMemtableMgrPool *pool)
{
int ret = OB_SUCCESS;
reset();