release all ddl kv when direct load mgr not needed
This commit is contained in:
@ -473,6 +473,8 @@ int ObDDLTableMergeTask::merge_full_direct_load_ddl_kvs(ObLSHandle &ls_handle, O
|
||||
if (OB_SUCC(ret) && merge_param_.is_commit_ && is_major_exist) {
|
||||
if (OB_FAIL(MTL(ObTabletTableUpdater*)->submit_tablet_update_task(merge_param_.ls_id_, merge_param_.tablet_id_))) {
|
||||
LOG_WARN("fail to submit tablet update task", K(ret), K(tenant_id), K(merge_param_));
|
||||
} else if (OB_FAIL(ddl_kv_mgr_handle.get_obj()->release_ddl_kvs(SCN::max_scn()))) {
|
||||
LOG_WARN("release all ddl kv failed", K(ret), K(ddl_param));
|
||||
} else if (OB_FAIL(tenant_direct_load_mgr->remove_tablet_direct_load(ObTabletDirectLoadMgrKey(merge_param_.tablet_id_, true)))) {
|
||||
if (OB_ENTRY_NOT_EXIST == ret) {
|
||||
ret = OB_SUCCESS;
|
||||
|
||||
@ -373,6 +373,7 @@ int ObLSDDLLogHandler::flush(SCN &rec_scn)
|
||||
ObDDLKvMgrHandle ddl_kv_mgr_handle;
|
||||
ObTabletDirectLoadMgrHandle direct_load_mgr_hdl;
|
||||
bool is_major_sstable_exist = false;
|
||||
int tmp_ret = OB_SUCCESS;
|
||||
if (OB_FAIL(tablet_iter.get_next_ddl_kv_mgr(ddl_kv_mgr_handle))) {
|
||||
if (OB_ITER_END == ret) {
|
||||
ret = OB_SUCCESS;
|
||||
@ -381,21 +382,21 @@ int ObLSDDLLogHandler::flush(SCN &rec_scn)
|
||||
LOG_WARN("failed to get ddl kv mgr", K(ret), K(ddl_kv_mgr_handle));
|
||||
}
|
||||
} else if (OB_UNLIKELY(!ddl_kv_mgr_handle.is_valid())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("invalid ddl kv mgr handle", K(ret), K(ddl_kv_mgr_handle));
|
||||
} else if (OB_FAIL(ddl_kv_mgr_handle.get_obj()->check_has_effective_ddl_kv(has_ddl_kv))) {
|
||||
LOG_WARN("failed to check ddl kv", K(ret));
|
||||
tmp_ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("invalid ddl kv mgr handle", K(tmp_ret), K(ddl_kv_mgr_handle));
|
||||
} else if (OB_TMP_FAIL(ddl_kv_mgr_handle.get_obj()->check_has_effective_ddl_kv(has_ddl_kv))) {
|
||||
LOG_WARN("failed to check ddl kv", K(tmp_ret));
|
||||
} else if (!has_ddl_kv) {
|
||||
} else if (OB_FAIL(tenant_direct_load_mgr->get_tablet_mgr_and_check_major(
|
||||
} else if (OB_TMP_FAIL(tenant_direct_load_mgr->get_tablet_mgr_and_check_major(
|
||||
ls_->get_ls_id(),
|
||||
ddl_kv_mgr_handle.get_obj()->get_tablet_id(),
|
||||
true/* is_full_direct_load */,
|
||||
direct_load_mgr_hdl,
|
||||
is_major_sstable_exist))) {
|
||||
if (OB_ENTRY_NOT_EXIST == ret && is_major_sstable_exist) {
|
||||
LOG_WARN("major sstable already exist, ddl kv may leak", K(ret), "tablet_id", ddl_kv_mgr_handle.get_obj()->get_tablet_id());
|
||||
if (OB_ENTRY_NOT_EXIST == tmp_ret && is_major_sstable_exist) {
|
||||
LOG_WARN("major sstable already exist, ddl kv may leak", K(tmp_ret), "tablet_id", ddl_kv_mgr_handle.get_obj()->get_tablet_id());
|
||||
} else {
|
||||
LOG_WARN("get tablet direct load mgr failed", K(ret), "tablet_id", ddl_kv_mgr_handle.get_obj()->get_tablet_id(), K(is_major_sstable_exist));
|
||||
LOG_WARN("get tablet direct load mgr failed", K(tmp_ret), "tablet_id", ddl_kv_mgr_handle.get_obj()->get_tablet_id(), K(is_major_sstable_exist));
|
||||
}
|
||||
} else {
|
||||
DEBUG_SYNC(BEFORE_DDL_CHECKPOINT);
|
||||
@ -409,10 +410,10 @@ int ObLSDDLLogHandler::flush(SCN &rec_scn)
|
||||
param.data_format_version_ = direct_load_mgr_hdl.get_full_obj()->get_data_format_version();
|
||||
param.snapshot_version_ = direct_load_mgr_hdl.get_full_obj()->get_table_key().get_snapshot_version();
|
||||
LOG_INFO("schedule ddl merge dag", K(param));
|
||||
if (OB_FAIL(ObTabletDDLUtil::freeze_ddl_kv(param))) {
|
||||
LOG_WARN("try to freeze ddl kv failed", K(ret), K(param));
|
||||
} else if (OB_FAIL(compaction::ObScheduleDagFunc::schedule_ddl_table_merge_dag(param))) {
|
||||
LOG_WARN("try schedule ddl merge dag failed when ddl kv is full ", K(ret), K(param));
|
||||
if (OB_TMP_FAIL(ObTabletDDLUtil::freeze_ddl_kv(param))) {
|
||||
LOG_WARN("try to freeze ddl kv failed", K(tmp_ret), K(param));
|
||||
} else if (OB_TMP_FAIL(compaction::ObScheduleDagFunc::schedule_ddl_table_merge_dag(param))) {
|
||||
LOG_WARN("try schedule ddl merge dag failed when ddl kv is full ", K(tmp_ret), K(param));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user