提交 cf9f170b 编写于 作者: O obdev 提交者: ob-robot

set allocator frozen

上级 1c41b3c1
......@@ -218,11 +218,15 @@ void ObMemtable::destroy()
ObTimeGuard time_guard("ObMemtable::destroy()", 100 * 1000);
int ret = OB_SUCCESS;
if (is_inited_) {
const common::ObTabletID tablet_id = key_.tablet_id_;
const int64_t cost_time = ObTimeUtility::current_time() - mt_stat_.release_time_;
if (cost_time > 1 * 1000 * 1000) {
STORAGE_LOG(WARN, "it costs too much time from release to destroy", K(cost_time), K(tablet_id), KP(this));
}
STORAGE_LOG(INFO, "memtable destroyed", K(*this));
time_guard.click();
ObMemtableStat::get_instance().unregister_memtable(this);
time_guard.click();
const common::ObTabletID tablet_id = key_.tablet_id_;
ObTenantFreezer *freezer = nullptr;
freezer = MTL(ObTenantFreezer *);
if (OB_SUCCESS != freezer->unset_tenant_slow_freeze(tablet_id)) {
......
......@@ -466,7 +466,7 @@ public:
bool &is_all_delay_cleanout,
int64_t &count);
int dump2text(const char *fname);
INHERIT_TO_STRING_KV("ObITable", ObITable, KP(this), K_(timestamp), K_(state),
INHERIT_TO_STRING_KV("ObITable", ObITable, KP(this), KP_(memtable_mgr), K_(timestamp), K_(state),
K_(freeze_clock), K_(max_schema_version), K_(write_ref_cnt), K_(local_allocator),
K_(unsubmitted_cnt), K_(unsynced_cnt),
K_(logging_blocked), K_(unset_active_memtable_logging_blocked), K_(resolve_active_memtable_left_boundary),
......
......@@ -349,7 +349,7 @@ int ObIMemtableMgr::add_memtable_(ObTableHandleV2 &memtable_handle)
memtable_tail_++;
ObTaskController::get().allow_next_syslog();
// FIXME : delete lbt()
STORAGE_LOG(INFO, "succeed to add memtable", K(get_memtable_count_()),
STORAGE_LOG(INFO, "succeed to add memtable", KP(this), K(get_memtable_count_()),
K(memtable_handle), K(lbt()));
}
}
......
......@@ -64,6 +64,7 @@ void ObTabletMemtableMgr::destroy()
} else if (imemtable->is_data_memtable()) {
memtable::ObMemtable *memtable = static_cast<memtable::ObMemtable *>(imemtable);
memtable->remove_from_data_checkpoint();
memtable->set_frozen();
}
}
reset_tables();
......@@ -644,9 +645,7 @@ int ObTabletMemtableMgr::release_head_memtable_(memtable::ObIMemtable *imemtable
memtable->remove_from_data_checkpoint();
memtable->set_is_flushed();
memtable->set_freeze_state(ObMemtableFreezeState::RELEASED);
if (force) {
memtable->set_frozen();
}
memtable->set_frozen();
release_head_memtable();
FLOG_INFO("succeed to release head data memtable", K(ret), K(ls_id), K(tablet_id_));
}
......@@ -754,7 +753,15 @@ int64_t ObTabletMemtableMgr::get_unmerged_memtable_count_() const
void ObTabletMemtableMgr::clean_tail_memtable_()
{
ObIMemtableMgr::release_tail_memtable();
if (memtable_tail_ > memtable_head_) {
ObMemtable *memtable = get_memtable_(memtable_tail_ - 1);
if (OB_NOT_NULL(memtable)) {
memtable->set_frozen();
} else {
LOG_WARN_RET(OB_ERR_UNEXPECTED, "memtable is null when clean_tail_memtable_", KPC(this));
}
ObIMemtableMgr::release_tail_memtable();
}
}
int ObTabletMemtableMgr::get_memtables_(ObTableHdlArray &handle, const int64_t start_point,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册