diagnose ls only once

This commit is contained in:
a1iive
2023-08-02 04:24:08 +00:00
committed by ob-robot
parent 60133dd9c8
commit b92ecbf728
2 changed files with 38 additions and 29 deletions

View File

@ -708,11 +708,38 @@ int ObCompactionDiagnoseMgr::get_suspect_info_and_print(
return ret; return ret;
} }
int ObCompactionDiagnoseMgr::diagnose_ls_merge( void ObCompactionDiagnoseMgr::diagnose_tenant_ls(
const ObMergeType merge_type, const bool diagnose_major_flag,
const bool weak_read_ts_ready,
const int64_t compaction_scn,
const bool is_leader,
const ObLSID &ls_id) const ObLSID &ls_id)
{ {
return get_suspect_info_and_print(merge_type, ls_id, ObTabletID(INT64_MAX)); int tmp_ret = OB_SUCCESS;
// check weak read ts
if (diagnose_major_flag
&& !weak_read_ts_ready
&& can_add_diagnose_info()
&& OB_TMP_FAIL(SET_DIAGNOSE_INFO(
info_array_[idx_++],
MEDIUM_MERGE,
MTL_ID(),
ls_id,
ObTabletID(INT64_MAX),
ObCompactionDiagnoseInfo::DIA_STATUS_FAILED,
ObTimeUtility::fast_current_time(),
"weak read ts is not ready, compaction_scn",
compaction_scn))) {
LOG_WARN_RET(tmp_ret, "failed to add dignose info about weak read ts", K(ls_id), K(compaction_scn));
}
// check ls suspect info for memtable freezing
if (OB_TMP_FAIL(get_suspect_info_and_print(MINI_MERGE, ls_id, ObTabletID(INT64_MAX)))) {
LOG_WARN_RET(tmp_ret, "failed to diagnose about memtable freezing", K(ls_id));
}
// check ls locality change and leader change
if (is_leader && OB_TMP_FAIL(get_suspect_info_and_print(MEDIUM_MERGE, ls_id, ObTabletID(INT64_MAX)))) {
LOG_WARN_RET(tmp_ret, "failed to diagnose about ls locality change", K(ls_id));
}
} }
int ObCompactionDiagnoseMgr::get_next_tablet(ObLSID &ls_id) int ObCompactionDiagnoseMgr::get_next_tablet(ObLSID &ls_id)
@ -871,6 +898,9 @@ int ObCompactionDiagnoseMgr::diagnose_tenant_tablet()
LOG_WARN("failed to set ls check status", K(ret), K(ls_id), K(ls_check_status)); LOG_WARN("failed to set ls check status", K(ret), K(ls_id), K(ls_check_status));
} else if (!ls_check_status.need_merge_) { } else if (!ls_check_status.need_merge_) {
(void)abnormal_ls_id.push_back(ls_id); (void)abnormal_ls_id.push_back(ls_id);
} else {
(void)diagnose_tenant_ls(diagnose_major_flag, ls_check_status.weak_read_ts_ready_, compaction_scn,
ls_check_status.is_leader_, ls_id);
} }
} else { } else {
LOG_WARN("failed to get ls check status from map", K(ret)); LOG_WARN("failed to get ls check status from map", K(ret));
@ -879,30 +909,6 @@ int ObCompactionDiagnoseMgr::diagnose_tenant_tablet()
++diagnose_tablets; ++diagnose_tablets;
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
if (ls_check_status.need_merge_) { if (ls_check_status.need_merge_) {
// check weak read ts
if (diagnose_major_flag
&& !ls_check_status.weak_read_ts_ready_
&& can_add_diagnose_info()
&& OB_TMP_FAIL(SET_DIAGNOSE_INFO(
info_array_[idx_++],
MEDIUM_MERGE,
MTL_ID(),
ls_id,
ObTabletID(INT64_MAX),
ObCompactionDiagnoseInfo::DIA_STATUS_FAILED,
ObTimeUtility::fast_current_time(),
"weak read ts is not ready, compaction_scn",
compaction_scn))) {
LOG_WARN("failed to add dignose info about weak read ts", K(tmp_ret), K(compaction_scn));
}
// check ls suspect info for memtable freezing
if (OB_TMP_FAIL(diagnose_ls_merge(MINI_MERGE, ls_id))) {
LOG_WARN("failed to diagnose about memtable freezing", K(tmp_ret));
}
// check ls locality change and leader change
if (ls_check_status.is_leader_ && OB_TMP_FAIL(diagnose_ls_merge(MEDIUM_MERGE, ls_id))) {
LOG_WARN("failed to diagnose about ls locality change", K(tmp_ret));
}
if (OB_TMP_FAIL(diagnose_tablet_major_and_medium(diagnose_major_flag, if (OB_TMP_FAIL(diagnose_tablet_major_and_medium(diagnose_major_flag,
ls_check_status.weak_read_ts_ready_, compaction_scn, ls_check_status.weak_read_ts_ready_, compaction_scn,
ls_id, *tablet_handle_.get_obj(), tablet_major_finish))) { ls_id, *tablet_handle_.get_obj(), tablet_major_finish))) {

View File

@ -439,8 +439,11 @@ private:
int get_next_tablet(ObLSID &ls_id); int get_next_tablet(ObLSID &ls_id);
void release_last_tenant(); void release_last_tenant();
int gen_ls_check_status(const ObLSID &ls_id, const int64_t compaction_scn, ObLSCheckStatus &ls_status); int gen_ls_check_status(const ObLSID &ls_id, const int64_t compaction_scn, ObLSCheckStatus &ls_status);
int diagnose_ls_merge( void diagnose_tenant_ls(
const ObMergeType merge_type, const bool diagnose_major_flag,
const bool weak_read_ts_ready,
const int64_t compaction_scn,
const bool is_leader,
const ObLSID &ls_id); const ObLSID &ls_id);
int diagnose_tablet_mini_merge(const ObLSID &ls_id, ObTablet &tablet); int diagnose_tablet_mini_merge(const ObLSID &ls_id, ObTablet &tablet);
int diagnose_tablet_minor_merge(const ObLSID &ls_id, ObTablet &tablet); int diagnose_tablet_minor_merge(const ObLSID &ls_id, ObTablet &tablet);