change recorder destroy when offline
This commit is contained in:
parent
16a4a46d78
commit
5f7586e893
@ -5583,7 +5583,7 @@ int ObLSTabletService::DestroyMemtableAndMemberOperator::operator()(const common
|
||||
}
|
||||
} else if (OB_FAIL(handle.get_obj()->release_memtables())) {
|
||||
LOG_WARN("failed to release memtables", K(tenant_id), K(tablet_id));
|
||||
} else if (!tablet_id.is_ls_inner_tablet() && OB_FAIL(handle.get_obj()->destroy_storage_related_member())) {
|
||||
} else if (!tablet_id.is_ls_inner_tablet() && OB_FAIL(handle.get_obj()->reset_storage_related_member())) {
|
||||
LOG_WARN("failed to destroy storage related member", K(ret), K(tenant_id), K(tablet_id));
|
||||
}
|
||||
return ret;
|
||||
|
@ -123,7 +123,7 @@ public:
|
||||
UNUSED(log_handler);
|
||||
return OB_NOT_SUPPORTED;
|
||||
}
|
||||
virtual int destroy_storage_schema_recorder()
|
||||
virtual int reset_storage_schema_recorder()
|
||||
{ // do nothing
|
||||
return OB_NOT_SUPPORTED;
|
||||
}
|
||||
|
@ -103,6 +103,15 @@ ObStorageSchemaRecorder::~ObStorageSchemaRecorder()
|
||||
}
|
||||
|
||||
void ObStorageSchemaRecorder::reset()
|
||||
{
|
||||
if (is_inited_) {
|
||||
wait_to_lock(OB_INVALID_VERSION); // lock
|
||||
max_saved_table_version_ = 0;
|
||||
ATOMIC_STORE(&lock_, false); // unlock
|
||||
}
|
||||
}
|
||||
|
||||
void ObStorageSchemaRecorder::destroy()
|
||||
{
|
||||
is_inited_ = false;
|
||||
max_saved_table_version_ = OB_INVALID_VERSION;
|
||||
|
@ -58,6 +58,7 @@ public:
|
||||
const int64_t saved_schema_version,
|
||||
logservice::ObLogHandler *log_handler);
|
||||
void reset();
|
||||
void destroy();
|
||||
bool is_inited() const { return is_inited_; }
|
||||
bool is_valid() const
|
||||
{
|
||||
|
@ -282,10 +282,6 @@ int ObTablet::init(
|
||||
|| OB_ISNULL(log_handler_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("tablet pointer handle is invalid", K(ret), K_(pointer_hdl), K_(memtable_mgr), K_(log_handler));
|
||||
} else if (is_update
|
||||
&& !tablet_id.is_ls_inner_tablet()
|
||||
&& OB_FAIL(init_storage_related_member(ls_id, tablet_id, param.max_sync_storage_schema_version_))) {
|
||||
LOG_WARN("failed to init storage related member", K(ret), K(ls_id), K(tablet_id));
|
||||
} else if (!is_update && OB_FAIL(init_shared_params(ls_id, tablet_id, param.max_sync_storage_schema_version_, freezer))) {
|
||||
LOG_WARN("failed to init shared params", K(ret), K(ls_id), K(tablet_id), KP(freezer));
|
||||
} else if (OB_FAIL(tablet_meta_.init(*allocator_, param))) {
|
||||
@ -1632,7 +1628,7 @@ int ObTablet::release_memtables()
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObTablet::destroy_storage_related_member()
|
||||
int ObTablet::reset_storage_related_member()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObIMemtableMgr *memtable_mgr = nullptr;
|
||||
@ -1644,7 +1640,7 @@ int ObTablet::destroy_storage_related_member()
|
||||
// do nothing
|
||||
} else if (OB_FAIL(get_memtable_mgr(memtable_mgr))) {
|
||||
LOG_WARN("failed to get memtable mgr", K(ret));
|
||||
} else if (OB_FAIL(memtable_mgr->destroy_storage_schema_recorder())) {
|
||||
} else if (OB_FAIL(memtable_mgr->reset_storage_schema_recorder())) {
|
||||
LOG_WARN("failed to destroy storage schema recorder", K(ret), KPC(memtable_mgr));
|
||||
}
|
||||
return ret;
|
||||
@ -1732,30 +1728,6 @@ int ObTablet::init_shared_params(
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObTablet::init_storage_related_member(
|
||||
const share::ObLSID &ls_id,
|
||||
const common::ObTabletID &tablet_id,
|
||||
const int64_t max_saved_schema_version) // for init storage_schema_recorder on MemtableMgr
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (OB_UNLIKELY(!pointer_hdl_.is_valid())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("tablet pointer handle is invalid", K(ret), K_(pointer_hdl));
|
||||
} else if (is_ls_inner_tablet()) {
|
||||
// do nothing
|
||||
} else {
|
||||
ObIMemtableMgr *memtable_mgr = nullptr;
|
||||
ObTabletMemtableMgr *data_memtable_mgr = nullptr;
|
||||
if (OB_FAIL(get_memtable_mgr(memtable_mgr))) {
|
||||
LOG_WARN("failed to get memtable mgr", K(ret));
|
||||
} else if (FALSE_IT(data_memtable_mgr = static_cast<ObTabletMemtableMgr *>(memtable_mgr))) {
|
||||
} else if (OB_FAIL(data_memtable_mgr->init_storage_schema_recorder(tablet_id, ls_id, max_saved_schema_version, log_handler_))) {
|
||||
LOG_WARN("failed to init storage schema recorder", K(ret), K(tablet_id), K(ls_id), KP(max_saved_schema_version));
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObTablet::build_read_info(common::ObIAllocator &allocator)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
@ -218,7 +218,7 @@ public:
|
||||
// force release all memtables
|
||||
// just for rebuild or migrate retry.
|
||||
int release_memtables();
|
||||
int destroy_storage_related_member();
|
||||
int reset_storage_related_member();
|
||||
|
||||
// multi-source data operation
|
||||
int check_tx_data(bool &is_valid) const;
|
||||
@ -367,10 +367,6 @@ private:
|
||||
const common::ObTabletID &tablet_id,
|
||||
const int64_t max_saved_schema_version,
|
||||
ObFreezer *freezer);
|
||||
int init_storage_related_member(
|
||||
const share::ObLSID &ls_id,
|
||||
const common::ObTabletID &tablet_id,
|
||||
const int64_t max_saved_schema_version);
|
||||
int build_read_info(common::ObIAllocator &allocator);
|
||||
int create_memtable(const int64_t schema_version, const bool for_replay=false);
|
||||
int try_update_start_scn();
|
||||
|
@ -125,10 +125,13 @@ int ObTabletMemtableMgr::init_storage_schema_recorder(
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObTabletMemtableMgr::destroy_storage_schema_recorder()
|
||||
int ObTabletMemtableMgr::reset_storage_schema_recorder()
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (schema_recorder_.is_inited()) {
|
||||
if (OB_UNLIKELY(!schema_recorder_.is_inited())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("schema recorder is not init", K(ret));
|
||||
} else {
|
||||
schema_recorder_.reset();
|
||||
}
|
||||
return ret;
|
||||
|
@ -96,7 +96,7 @@ public:
|
||||
const share::ObLSID &ls_id,
|
||||
const int64_t max_saved_schema_version,
|
||||
logservice::ObLogHandler *log_handler) override;
|
||||
virtual int destroy_storage_schema_recorder() override;
|
||||
virtual int reset_storage_schema_recorder() override;
|
||||
DECLARE_VIRTUAL_TO_STRING;
|
||||
|
||||
protected:
|
||||
|
Loading…
x
Reference in New Issue
Block a user