fix update_merge_status repeatedly report OB_INNER_STAT_ERROR when checksum_error exists

This commit is contained in:
obdev
2022-11-03 02:36:02 +00:00
committed by wangzelin.wzl
parent 31418623c2
commit 3eef7b053a
5 changed files with 13 additions and 1 deletions

View File

@ -657,6 +657,8 @@ int ObMajorMergeScheduler::try_update_global_merged_scn(const int64_t expected_e
LOG_WARN("not inited", KR(ret));
} else if (OB_FAIL(zone_merge_mgr_->get_snapshot(global_info, infos))) {
LOG_WARN("fail to get zone info", KR(ret));
} else if (global_info.is_merge_error()) {
LOG_WARN("should not update global merged scn, cuz is_merge_error is true", K(global_info));
} else {
if (global_info.last_merged_scn_ != global_info.global_broadcast_scn_) {
bool merged = true;

View File

@ -801,9 +801,12 @@ int ObZoneMergeManagerBase::update_global_merge_info_after_merge(const int64_t e
const uint64_t meta_tenant_id = gen_meta_tenant_id(tenant_id_);
if (OB_FAIL(check_inner_stat())) {
LOG_WARN("fail to check inner stat", KR(ret), K_(tenant_id));
} else if (global_merge_info_.is_in_verifying_status()) {
LOG_INFO("already in verifying status, no need to update global merge status again", K_(tenant_id),
"global merge status", global_merge_info_.merge_status_);
} else if (global_merge_info_.is_merge_error()) {
ret = OB_INNER_STAT_ERROR;
LOG_WARN("should not continue checking checksum, cuz is_merge_error is true", KR(ret), K_(global_merge_info));
LOG_WARN("should not update global merge status, cuz is_merge_error is true", KR(ret), K_(global_merge_info));
} else {
if (OB_FAIL(trans.start(proxy_, meta_tenant_id))) {
LOG_WARN("fail to start transaction", KR(ret), K_(tenant_id), K(meta_tenant_id));

View File

@ -88,6 +88,7 @@ private:
const common::ObIArray<share::ObZoneMergeInfo> &ori_merge_infos,
const common::ObIArray<common::ObZone> &zone_list,
common::ObIArray<share::ObZoneMergeInfo> &to_insert_infos);
protected:
common::SpinRWLock lock_;
static int copy_infos(ObZoneMergeManagerBase &dest, const ObZoneMergeManagerBase &src);

View File

@ -226,6 +226,11 @@ bool ObGlobalMergeInfo::is_merge_error() const
return (is_merge_error_ > 0);
}
bool ObGlobalMergeInfo::is_in_verifying_status() const
{
return (ObZoneMergeInfo::MERGE_STATUS_VERIFYING == merge_status_);
}
bool ObGlobalMergeInfo::is_valid() const
{
bool is_valid = true;

View File

@ -111,6 +111,7 @@ public:
bool is_in_merge() const;
bool is_valid() const;
bool is_merge_error() const;
bool is_in_verifying_status() const;
ObGlobalMergeInfo &operator = (const ObGlobalMergeInfo &other) = delete;
int assign(const ObGlobalMergeInfo &other);
// differ from assign, only exclude 'need_update_' copy