diff --git a/src/storage/ddl/ob_ddl_merge_task.cpp b/src/storage/ddl/ob_ddl_merge_task.cpp index 11cc271904..dc31c3f4f9 100644 --- a/src/storage/ddl/ob_ddl_merge_task.cpp +++ b/src/storage/ddl/ob_ddl_merge_task.cpp @@ -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; diff --git a/src/storage/ls/ob_ls_ddl_log_handler.cpp b/src/storage/ls/ob_ls_ddl_log_handler.cpp index 94120f24c8..1ae8f91e47 100644 --- a/src/storage/ls/ob_ls_ddl_log_handler.cpp +++ b/src/storage/ls/ob_ls_ddl_log_handler.cpp @@ -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)); } } }