diagnose ls only once
This commit is contained in:
@ -708,11 +708,38 @@ int ObCompactionDiagnoseMgr::get_suspect_info_and_print(
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObCompactionDiagnoseMgr::diagnose_ls_merge(
|
||||
const ObMergeType merge_type,
|
||||
void ObCompactionDiagnoseMgr::diagnose_tenant_ls(
|
||||
const bool diagnose_major_flag,
|
||||
const bool weak_read_ts_ready,
|
||||
const int64_t compaction_scn,
|
||||
const bool is_leader,
|
||||
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)
|
||||
@ -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));
|
||||
} else if (!ls_check_status.need_merge_) {
|
||||
(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 {
|
||||
LOG_WARN("failed to get ls check status from map", K(ret));
|
||||
@ -879,30 +909,6 @@ int ObCompactionDiagnoseMgr::diagnose_tenant_tablet()
|
||||
++diagnose_tablets;
|
||||
if (OB_SUCC(ret)) {
|
||||
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,
|
||||
ls_check_status.weak_read_ts_ready_, compaction_scn,
|
||||
ls_id, *tablet_handle_.get_obj(), tablet_major_finish))) {
|
||||
|
||||
@ -439,8 +439,11 @@ private:
|
||||
int get_next_tablet(ObLSID &ls_id);
|
||||
void release_last_tenant();
|
||||
int gen_ls_check_status(const ObLSID &ls_id, const int64_t compaction_scn, ObLSCheckStatus &ls_status);
|
||||
int diagnose_ls_merge(
|
||||
const ObMergeType merge_type,
|
||||
void diagnose_tenant_ls(
|
||||
const bool diagnose_major_flag,
|
||||
const bool weak_read_ts_ready,
|
||||
const int64_t compaction_scn,
|
||||
const bool is_leader,
|
||||
const ObLSID &ls_id);
|
||||
int diagnose_tablet_mini_merge(const ObLSID &ls_id, ObTablet &tablet);
|
||||
int diagnose_tablet_minor_merge(const ObLSID &ls_id, ObTablet &tablet);
|
||||
|
||||
Reference in New Issue
Block a user