Reset some fileds when tx data table offline
This commit is contained in:
@ -86,6 +86,18 @@ void ObTxDataMemtableMgr::destroy()
|
||||
is_inited_ = false;
|
||||
}
|
||||
|
||||
int ObTxDataMemtableMgr::offline()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (OB_FAIL(release_memtables())) {
|
||||
STORAGE_LOG(WARN, "release tx data memtables failed", KR(ret));
|
||||
} else {
|
||||
memtable_head_ = 0;
|
||||
memtable_tail_ = 0;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObTxDataMemtableMgr::release_head_memtable_(memtable::ObIMemtable *imemtable,
|
||||
const bool force)
|
||||
{
|
||||
|
@ -48,6 +48,10 @@ public: // ObTxDataMemtableMgr
|
||||
ObFreezer *freezer,
|
||||
ObTenantMetaMemMgr *t3m) override;
|
||||
virtual void destroy() override;
|
||||
|
||||
int offline();
|
||||
|
||||
|
||||
/**
|
||||
* @brief This function do the following operations:
|
||||
* 1. check some parameters which is required by freeze;
|
||||
|
@ -200,12 +200,14 @@ int ObTxDataTable::offline()
|
||||
if (IS_NOT_INIT) {
|
||||
ret = OB_NOT_INIT;
|
||||
STORAGE_LOG(WARN, "tx data table is not inited", KR(ret), KPC(this));
|
||||
} else if (get_memtable_mgr_()->release_memtables()) {
|
||||
} else if (get_memtable_mgr_()->offline()) {
|
||||
STORAGE_LOG(WARN, "release memtables failed", KR(ret));
|
||||
} else if (OB_FAIL(clean_memtables_cache_())) {
|
||||
STORAGE_LOG(WARN, "clean memtables cache failed", KR(ret), KPC(this));
|
||||
} else {
|
||||
min_start_log_ts_in_ctx_ = 0;
|
||||
last_update_min_start_log_ts_ = 0;
|
||||
calc_upper_trans_version_cache_.reset();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
Reference in New Issue
Block a user