set allocator frozen
This commit is contained in:
@ -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,
|
||||
|
||||
Reference in New Issue
Block a user