fix major_freeze bug of checking progress
This commit is contained in:
@ -578,9 +578,13 @@ int ObMajorMergeScheduler::update_merge_status(const int64_t expected_epoch)
|
||||
cur_all_merged_scn = progress->smallest_snapshot_version_;
|
||||
}
|
||||
|
||||
if ((last_merged_scn < cur_all_merged_scn) || (ori_all_merged_scn > cur_all_merged_scn)) {
|
||||
// cur_all_merged_scn >= last_merged_scn
|
||||
// 1. Equal: snapshot_version of all tablets change to frozen_scn after major compaction
|
||||
// 2. Greater: In backup-restore situation, tablets may have higher snapshot_version, which
|
||||
// is larger than current frozen_scn. https://work.aone.alibaba-inc.com/issue/45933591
|
||||
if ((cur_all_merged_scn < last_merged_scn) || (ori_all_merged_scn > cur_all_merged_scn)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("unexpect version", KR(ret), K(last_merged_scn), K(cur_all_merged_scn),
|
||||
LOG_ERROR("unexpect merge scn", KR(ret), K(last_merged_scn), K(cur_all_merged_scn),
|
||||
K(ori_all_merged_scn));
|
||||
} else {
|
||||
// TODO 'zone merge finish' & 'zone all tablet merge finish' should be handled in same procedure.
|
||||
|
@ -372,8 +372,7 @@ int ObZoneMergeManagerBase::finish_zone_merge(
|
||||
|
||||
if (OB_FAIL(check_valid(zone, idx))) {
|
||||
LOG_WARN("fail to check valid", KR(ret), K(zone), K_(tenant_id));
|
||||
} else if ((last_merged_scn <= 0) || (all_merged_scn <= 0)
|
||||
|| (all_merged_scn > last_merged_scn)) {
|
||||
} else if ((last_merged_scn <= 0) || (all_merged_scn <= 0)) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid argument", KR(ret), K(zone), K_(tenant_id),
|
||||
K(last_merged_scn), K(all_merged_scn));
|
||||
@ -393,7 +392,7 @@ int ObZoneMergeManagerBase::finish_zone_merge(
|
||||
} else {
|
||||
ObZoneMergeInfo::MergeStatus status = static_cast<ObZoneMergeInfo::MergeStatus>(
|
||||
zone_merge_infos_[idx].merge_status_.value_);
|
||||
if (last_merged_scn != zone_merge_infos_[idx].last_merged_scn_) {
|
||||
if (last_merged_scn > zone_merge_infos_[idx].last_merged_scn_) {
|
||||
const int64_t is_merging = 0;
|
||||
tmp_info.is_merging_.set_val(is_merging, true);
|
||||
tmp_info.last_merged_scn_.set_val(last_merged_scn, true);
|
||||
|
Reference in New Issue
Block a user