aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandrew-rykov <arykov@ydb.tech>2022-12-02 15:05:40 +0300
committerandrew-rykov <arykov@ydb.tech>2022-12-02 15:05:40 +0300
commit2f17ebb5dacea2db2bf47de8cf8ccfab3cbcc665 (patch)
tree408653d0c601b256366c57a984b8e49adf2c1040
parent22553d492d16c71d7b3589395343f975452644f7 (diff)
downloadydb-2f17ebb5dacea2db2bf47de8cf8ccfab3cbcc665.tar.gz
PR from branch users/andrew-rykov//issue-1-level
fix RemoveUnlinkIssues issue 1 level
-rw-r--r--ydb/core/health_check/health_check.cpp50
1 files changed, 34 insertions, 16 deletions
diff --git a/ydb/core/health_check/health_check.cpp b/ydb/core/health_check/health_check.cpp
index aec507cf1fe..7dc96d84589 100644
--- a/ydb/core/health_check/health_check.cpp
+++ b/ydb/core/health_check/health_check.cpp
@@ -1614,10 +1614,12 @@ public:
break;
case NKikimrWhiteboard::EVDiskState::Initial:
case NKikimrWhiteboard::EVDiskState::SyncGuidRecovery:
+ context.IssueRecords.clear();
context.ReportStatus(Ydb::Monitoring::StatusFlag::YELLOW,
TStringBuilder() << "VDisk state is " << NKikimrWhiteboard::EVDiskState_Name(vDiskInfo.GetVDiskState()),
ETags::VDiskState);
- break;
+ storageVDiskStatus.set_overall(context.GetOverallStatus());
+ return;
case NKikimrWhiteboard::EVDiskState::LocalRecoveryError:
case NKikimrWhiteboard::EVDiskState::SyncGuidRecoveryError:
case NKikimrWhiteboard::EVDiskState::PDiskError:
@@ -1625,20 +1627,34 @@ public:
TStringBuilder() << "VDisk state is " << NKikimrWhiteboard::EVDiskState_Name(vDiskInfo.GetVDiskState()),
ETags::VDiskState,
{ETags::PDiskState});
- break;
+ storageVDiskStatus.set_overall(context.GetOverallStatus());
+ return;
+ }
+
+ if (!vDiskInfo.GetReplicated()) {
+ context.IssueRecords.clear();
+ context.ReportStatus(Ydb::Monitoring::StatusFlag::BLUE, "Replication in progress", ETags::VDiskState);
+ return;
}
if (vDiskInfo.HasDiskSpace()) {
switch(vDiskInfo.GetDiskSpace()) {
case NKikimrWhiteboard::EFlag::Green:
- context.ReportStatus(Ydb::Monitoring::StatusFlag::GREEN);
+ if (context.IssueRecords.size() == 0) {
+ context.ReportStatus(Ydb::Monitoring::StatusFlag::GREEN);
+ } else {
+ context.ReportStatus(context.IssueRecords.begin()->IssueLog.status(),
+ TStringBuilder() << "VDisk is degraded",
+ ETags::VDiskState,
+ {ETags::PDiskSpace});
+ }
break;
case NKikimrWhiteboard::EFlag::Red:
- break;
context.ReportStatus(GetFlagFromWhiteboardFlag(vDiskInfo.GetDiskSpace()),
TStringBuilder() << "DiskSpace is " << NKikimrWhiteboard::EFlag_Name(vDiskInfo.GetDiskSpace()),
ETags::VDiskState,
{ETags::PDiskSpace});
+ break;
default:
context.ReportStatus(GetFlagFromWhiteboardFlag(vDiskInfo.GetDiskSpace()),
TStringBuilder() << "DiskSpace is " << NKikimrWhiteboard::EFlag_Name(vDiskInfo.GetDiskSpace()),
@@ -1648,10 +1664,6 @@ public:
}
}
- if (context.GetOverallStatus() == Ydb::Monitoring::StatusFlag::GREEN && !vDiskInfo.GetReplicated()) {
- context.ReportStatus(Ydb::Monitoring::StatusFlag::BLUE, "Replication in progress", ETags::VDiskState);
- }
-
storageVDiskStatus.set_overall(context.GetOverallStatus());
}
@@ -2032,14 +2044,14 @@ public:
FillVDiskStatus(vDiskId, itVDisk != MergedVDiskState.end() ? *itVDisk->second : NKikimrWhiteboard::TVDiskStateInfo(), vDiskStatus, {&context, "VDISK"});
++disksColors[vDiskStatus.overall()];
switch (vDiskStatus.overall()) {
- case Ydb::Monitoring::StatusFlag::BLUE: // disk is good, but not available
- case Ydb::Monitoring::StatusFlag::RED: // disk is bad, probably not available
- case Ydb::Monitoring::StatusFlag::GREY: // the status is absent, the disk is not available
- IncrementFor(failedRealms, protoVDiskId.ring());
- ++failedDisks;
- break;
- default:
- break;
+ case Ydb::Monitoring::StatusFlag::BLUE: // disk is good, but not available
+ case Ydb::Monitoring::StatusFlag::RED: // disk is bad, probably not available
+ case Ydb::Monitoring::StatusFlag::GREY: // the status is absent, the disk is not available
+ IncrementFor(failedRealms, protoVDiskId.ring());
+ ++failedDisks;
+ break;
+ default:
+ break;
}
}
@@ -2049,6 +2061,8 @@ public:
if (groupInfo.erasurespecies() == NONE) {
if (failedDisks > 0) {
context.ReportStatus(Ydb::Monitoring::StatusFlag::RED, "Group failed", ETags::GroupState, {ETags::VDiskState});
+ } else if (disksColors[Ydb::Monitoring::StatusFlag::YELLOW] > 0) {
+ context.ReportStatus(Ydb::Monitoring::StatusFlag::YELLOW, "Group degraded", ETags::GroupState, {ETags::VDiskState});
}
} else if (groupInfo.erasurespecies() == BLOCK_4_2) {
if (failedDisks > 2) {
@@ -2061,6 +2075,8 @@ public:
} else {
context.ReportStatus(Ydb::Monitoring::StatusFlag::YELLOW, "Group degraded", ETags::GroupState, {ETags::VDiskState});
}
+ } else if (disksColors[Ydb::Monitoring::StatusFlag::YELLOW] > 0) {
+ context.ReportStatus(Ydb::Monitoring::StatusFlag::YELLOW, "Group degraded", ETags::GroupState, {ETags::VDiskState});
}
} else if (groupInfo.erasurespecies() == MIRROR_3_DC) {
if (failedRealms.size() > 2 || (failedRealms.size() == 2 && failedRealms[0].second > 1 && failedRealms[1].second > 1)) {
@@ -2073,6 +2089,8 @@ public:
} else {
context.ReportStatus(Ydb::Monitoring::StatusFlag::YELLOW, "Group degraded", ETags::GroupState, {ETags::VDiskState});
}
+ } else if (disksColors[Ydb::Monitoring::StatusFlag::YELLOW] > 0) {
+ context.ReportStatus(Ydb::Monitoring::StatusFlag::YELLOW, "Group degraded", ETags::GroupState, {ETags::VDiskState});
}
}