add defense code in major execute

This commit is contained in:
obdev
2023-02-07 19:53:41 +08:00
committed by ob-robot
parent 72403954ce
commit 4faa17ca78
3 changed files with 25 additions and 17 deletions

View File

@ -818,6 +818,7 @@ int ObMediumCompactionScheduleFunc::schedule_tablet_medium_merge(
return ret;
}
#endif
if (MTL(ObTenantTabletScheduler *)->could_major_merge_start()) {
const ObMediumCompactionInfoList &medium_list = tablet.get_medium_compaction_info_list();
const ObTabletID &tablet_id = tablet.get_tablet_meta().tablet_id_;
const ObLSID &ls_id = ls.get_ls_id();
@ -838,6 +839,7 @@ int ObMediumCompactionScheduleFunc::schedule_tablet_medium_merge(
LOG_WARN("failed to check medium merge", K(ret), K(ls_id), K(tablet_id), K(schedule_scn));
}
}
}
return ret;
}

View File

@ -103,6 +103,12 @@ int ObPartitionMergePolicy::get_medium_merge_tables(
} else if (base_table->get_snapshot_version() >= param.merge_version_) {
ret = OB_NO_NEED_MERGE;
LOG_INFO("medium merge already finished", K(ret), KPC(base_table), K(result));
} else if (OB_UNLIKELY(tablet.get_snapshot_version() < param.merge_version_)) {
ret = OB_NO_NEED_MERGE;
LOG_INFO("tablet is not ready to schedule medium merge", K(ret), K(tablet), K(param));
} else if (OB_UNLIKELY(tablet.get_multi_version_start() > param.merge_version_)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("tablet haven't kept medium snapshot", K(ret), K(tablet), K(param));
} else {
const ObSSTableArray &minor_tables = table_store.get_minor_sstables();
bool start_add_table_flag = false;

View File

@ -984,7 +984,7 @@ TEST_F(TestCompactionPolicy, check_major_merge_basic)
ObGetMergeTablesParam param;
param.merge_type_ = ObMergeType::MAJOR_MERGE;
param.merge_version_ = 340;
param.merge_version_ = 350;
ObGetMergeTablesResult result;
FakeLS ls;
ret = ObPartitionMergePolicy::get_medium_merge_tables(param, ls, *tablet_handle_.get_obj(), result);