diff options
-rw-r--r-- | configd/src/apps/sentinel/connectivity.cpp | 18 | ||||
-rw-r--r-- | configd/src/apps/sentinel/outward-check.cpp | 6 | ||||
-rw-r--r-- | configd/src/apps/sentinel/outward-check.h | 2 |
3 files changed, 11 insertions, 15 deletions
diff --git a/configd/src/apps/sentinel/connectivity.cpp b/configd/src/apps/sentinel/connectivity.cpp index fcdcb88dc55..32d4d123a95 100644 --- a/configd/src/apps/sentinel/connectivity.cpp +++ b/configd/src/apps/sentinel/connectivity.cpp @@ -27,11 +27,10 @@ namespace { std::string toString(CcResult value) { switch (value) { case CcResult::UNKNOWN: return "BAD: missing result"; // very very bad - case CcResult::REMOTE_PING_FAIL: return "connect OK, but reverse check FAILED"; // very bad + case CcResult::INDIRECT_PING_FAIL: return "connect OK, but reverse check FAILED"; // very bad case CcResult::UNREACHABLE_UP: return "unreachable from me, but up"; // very bad case CcResult::CONN_FAIL: return "failed to connect"; // bad - case CcResult::AFFIRMED_DOWN: return "affirmed down"; // a problem, but probably not on this end - case CcResult::REMOTE_PING_UNAVAIL: return "connect OK (but reverse check unavailable)"; // unfortunate + case CcResult::INDIRECT_PING_UNAVAIL: return "connect OK (but reverse check unavailable)"; // unfortunate case CcResult::ALL_OK: return "OK: both ways connectivity verified"; // good } LOG(error, "Unknown CcResult enum value: %d", (int)value); @@ -106,15 +105,13 @@ void classifyConnFails(ConnectivityMap &connectivityMap, size_t numReportsUp = 0; size_t numReportsDown = 0; for (const auto & [hostname, probe] : cornerProbes) { - if (probe.result() == CcResult::REMOTE_PING_FAIL) ++numReportsDown; + if (probe.result() == CcResult::INDIRECT_PING_FAIL) ++numReportsDown; if (probe.result() == CcResult::ALL_OK) ++numReportsUp; } - if (numReportsUp > numReportsDown) { + if (numReportsUp > 0) { LOG(debug, "Unreachable: %s is up according to %zd hosts (down according to me + %zd others)", nameToCheck.c_str(), numReportsUp, numReportsDown); cmIter->second.classifyResult(CcResult::UNREACHABLE_UP); - } else if ((numReportsUp == 0) && (numReportsDown > 0)) { - cmIter->second.classifyResult(CcResult::AFFIRMED_DOWN); } } } @@ -150,7 +147,6 @@ Connectivity::checkConnectivity(RpcServer &rpcServer) { classifyConnFails(connectivityMap, _checkSpecs, rpcServer); size_t numProblematic = 0; size_t numUpButBad = 0; - bool allChecksOk = true; for (const auto & [hostname, check] : connectivityMap) { std::string detail = toString(check.result()); std::string prev = _detailsPerHost[hostname]; @@ -161,20 +157,20 @@ Connectivity::checkConnectivity(RpcServer &rpcServer) { LOG_ASSERT(check.result() != CcResult::UNKNOWN); switch (check.result()) { case CcResult::UNREACHABLE_UP: - case CcResult::REMOTE_PING_FAIL: + case CcResult::INDIRECT_PING_FAIL: ++numUpButBad; ++numProblematic; break; - case CcResult::AFFIRMED_DOWN: case CcResult::CONN_FAIL: ++numProblematic; break; case CcResult::UNKNOWN: - case CcResult::REMOTE_PING_UNAVAIL: + case CcResult::INDIRECT_PING_UNAVAIL: case CcResult::ALL_OK: break; } } + bool allChecksOk = true; if (numUpButBad > size_t(_config.maxBadReverseCount)) { LOG(warning, "%zu of %zu nodes up but with network connectivity problems (max is %d)", numUpButBad, clusterSize, _config.maxBadReverseCount); diff --git a/configd/src/apps/sentinel/outward-check.cpp b/configd/src/apps/sentinel/outward-check.cpp index 93068459292..21f7d2ff2d5 100644 --- a/configd/src/apps/sentinel/outward-check.cpp +++ b/configd/src/apps/sentinel/outward-check.cpp @@ -34,18 +34,18 @@ void OutwardCheck::RequestDone(FRT_RPCRequest *req) { } else if (answer == "bad") { LOG(debug, "connected to %s, but reverse connectivity fails: %s", _spec.c_str(), answer.c_str()); - _result = CcResult::REMOTE_PING_FAIL; + _result = CcResult::INDIRECT_PING_FAIL; } else { LOG(warning, "connected to %s, but strange reverse connectivity: %s", _spec.c_str(), answer.c_str()); - _result = CcResult::REMOTE_PING_UNAVAIL; + _result = CcResult::INDIRECT_PING_UNAVAIL; } } else if (req->GetErrorCode() == FRTE_RPC_NO_SUCH_METHOD || req->GetErrorCode() == FRTE_RPC_WRONG_PARAMS || req->GetErrorCode() == FRTE_RPC_WRONG_RETURN) { LOG(debug, "Connected OK to %s but no reverse connectivity check available", _spec.c_str()); - _result = CcResult::REMOTE_PING_UNAVAIL; + _result = CcResult::INDIRECT_PING_UNAVAIL; } else { LOG(debug, "error on request to %s : %s (%d)", _spec.c_str(), req->GetErrorMessage(), req->GetErrorCode()); diff --git a/configd/src/apps/sentinel/outward-check.h b/configd/src/apps/sentinel/outward-check.h index 904cfc9a271..9aec52dc678 100644 --- a/configd/src/apps/sentinel/outward-check.h +++ b/configd/src/apps/sentinel/outward-check.h @@ -27,7 +27,7 @@ struct OutwardCheckContext { ~OutwardCheckContext(); }; -enum class CcResult { UNKNOWN, AFFIRMED_DOWN, CONN_FAIL, UNREACHABLE_UP, REMOTE_PING_FAIL, REMOTE_PING_UNAVAIL, ALL_OK }; +enum class CcResult { UNKNOWN, CONN_FAIL, UNREACHABLE_UP, INDIRECT_PING_FAIL, INDIRECT_PING_UNAVAIL, ALL_OK }; class OutwardCheck : public FRT_IRequestWait { private: |