From 8ae68ec799a82ae884eb84fc51ae9ae80d4e036f Mon Sep 17 00:00:00 2001 From: Charles0429 Date: Sun, 18 Feb 2024 08:41:15 +0000 Subject: [PATCH] schedule dag when ddl kv freezed --- src/storage/ddl/ob_ddl_merge_task.cpp | 6 ++++++ src/storage/ls/ob_ls_ddl_log_handler.cpp | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/storage/ddl/ob_ddl_merge_task.cpp b/src/storage/ddl/ob_ddl_merge_task.cpp index 6e75daaf1..bae7d118e 100644 --- a/src/storage/ddl/ob_ddl_merge_task.cpp +++ b/src/storage/ddl/ob_ddl_merge_task.cpp @@ -1432,6 +1432,12 @@ int ObTabletDDLUtil::freeze_ddl_kv(const ObDDLTableMergeDagParam ¶m) && param.start_scn_ < tablet_handle.get_obj()->get_tablet_meta().ddl_start_scn_) { ret = OB_TASK_EXPIRED; LOG_WARN("ddl task expired, skip it", K(ret), K(param), "new_start_scn", tablet_handle.get_obj()->get_tablet_meta().ddl_start_scn_); + // TODO(cangdi): do not freeze when ddl kv's min scn >= rec_scn + } else if (!ddl_kv_mgr_handle.get_obj()->can_freeze()) { + ret = OB_EAGAIN; + if (REACH_TIME_INTERVAL(10 * 1000 * 1000)) { + LOG_WARN("cannot freeze now", K(param)); + } } else if (OB_FAIL(ddl_kv_mgr_handle.get_obj()->freeze_ddl_kv( param.start_scn_, param.snapshot_version_, param.data_format_version_))) { LOG_WARN("ddl kv manager try freeze failed", K(ret), K(param)); diff --git a/src/storage/ls/ob_ls_ddl_log_handler.cpp b/src/storage/ls/ob_ls_ddl_log_handler.cpp index b0ab624d0..94120f24c 100644 --- a/src/storage/ls/ob_ls_ddl_log_handler.cpp +++ b/src/storage/ls/ob_ls_ddl_log_handler.cpp @@ -411,6 +411,8 @@ int ObLSDDLLogHandler::flush(SCN &rec_scn) 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)); } } }