try flush ddl commit scn
This commit is contained in:
@ -1171,7 +1171,7 @@ int ObTenantTabletScheduler::schedule_tablet_minor_merge(
|
||||
}
|
||||
|
||||
int ObTenantTabletScheduler::schedule_tablet_ddl_major_merge(
|
||||
const share::ObLSID &ls_id,
|
||||
ObLSHandle &ls_handle,
|
||||
ObTabletHandle &tablet_handle)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
@ -1181,9 +1181,10 @@ int ObTenantTabletScheduler::schedule_tablet_ddl_major_merge(
|
||||
ObTenantDirectLoadMgr *tenant_direct_load_mgr = MTL(ObTenantDirectLoadMgr *);
|
||||
bool is_major_sstable_exist = false;
|
||||
bool has_freezed_ddl_kv = false;
|
||||
if (OB_UNLIKELY(!ls_id.is_valid() || !tablet_handle.is_valid())) {
|
||||
SCN ddl_commit_scn;
|
||||
if (OB_UNLIKELY(!ls_handle.is_valid() || !tablet_handle.is_valid())) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid argument", K(ret), K(ls_id), K(tablet_handle));
|
||||
LOG_WARN("invalid argument", K(ret), K(ls_handle), K(tablet_handle));
|
||||
} else if (tablet_handle.get_obj()->get_tablet_meta().has_transfer_table()) {
|
||||
if (REACH_TENANT_TIME_INTERVAL(PRINT_LOG_INVERVAL)) {
|
||||
LOG_INFO("The tablet in the transfer process does not do ddl major_merge", K(tablet_handle));
|
||||
@ -1192,7 +1193,7 @@ int ObTenantTabletScheduler::schedule_tablet_ddl_major_merge(
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("unexpected error", K(ret), K(MTL_ID()));
|
||||
} else if (OB_FAIL(tenant_direct_load_mgr->get_tablet_mgr_and_check_major(
|
||||
ls_id,
|
||||
ls_handle.get_ls()->get_ls_id(),
|
||||
tablet_handle.get_obj()->get_tablet_meta().tablet_id_,
|
||||
true, /* is_full_direct_load */
|
||||
direct_load_mgr_handle,
|
||||
@ -1204,6 +1205,9 @@ int ObTenantTabletScheduler::schedule_tablet_ddl_major_merge(
|
||||
}
|
||||
} else if (OB_FAIL(tablet_handle.get_obj()->get_ddl_kv_mgr(ddl_kv_mgr_handle))) {
|
||||
LOG_WARN("get ddl kv mgr failed", K(ret));
|
||||
} else if (FALSE_IT(ddl_commit_scn = direct_load_mgr_handle.get_full_obj()->get_commit_scn(tablet_handle.get_obj()->get_tablet_meta()))) {
|
||||
} else if (OB_FAIL(ddl_kv_mgr_handle.get_obj()->try_flush_ddl_commit_scn(ls_handle, tablet_handle, direct_load_mgr_handle, ddl_commit_scn))) {
|
||||
LOG_WARN("try flush ddl commit scn failed", K(ret), "tablet_id", tablet_handle.get_obj()->get_tablet_meta().tablet_id_);
|
||||
} else if (OB_FAIL(ddl_kv_mgr_handle.get_obj()->check_has_freezed_ddl_kv(has_freezed_ddl_kv))) {
|
||||
LOG_WARN("check has freezed ddl kv failed", K(ret));
|
||||
} else if (OB_FAIL(direct_load_mgr_handle.get_full_obj()->prepare_ddl_merge_param(*tablet_handle.get_obj(), param))) {
|
||||
@ -1347,7 +1351,7 @@ int ObTenantTabletScheduler::schedule_tablet_minor(
|
||||
}
|
||||
}
|
||||
if (!tablet_id.is_ls_inner_tablet()) { // data tablet
|
||||
if (OB_TMP_FAIL(schedule_tablet_ddl_major_merge(ls_id, tablet_handle))) {
|
||||
if (OB_TMP_FAIL(schedule_tablet_ddl_major_merge(ls_handle, tablet_handle))) {
|
||||
if (OB_SIZE_OVERFLOW != tmp_ret && OB_EAGAIN != tmp_ret) {
|
||||
LOG_WARN("failed to schedule tablet ddl merge", K(tmp_ret), K(ls_id), K(tablet_handle));
|
||||
}
|
||||
|
||||
@ -223,7 +223,7 @@ public:
|
||||
const ObMergeType merge_type,
|
||||
const int64_t &merge_snapshot_version);
|
||||
static int schedule_tablet_ddl_major_merge(
|
||||
const share::ObLSID &ls_id,
|
||||
ObLSHandle &ls_handle,
|
||||
ObTabletHandle &tablet_handle);
|
||||
|
||||
int get_min_dependent_schema_version(int64_t &min_schema_version);
|
||||
|
||||
Reference in New Issue
Block a user