From b54d4da7d22b2e27618bb2bb8865429e01ddab95 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Fri, 11 Jun 2021 13:53:26 +0000 Subject: take timeout as RPC parameter here also --- configd/src/apps/sentinel/report-connectivity.cpp | 5 ++--- configd/src/apps/sentinel/report-connectivity.h | 2 +- configd/src/apps/sentinel/rpchooks.cpp | 7 +++++-- 3 files changed, 8 insertions(+), 6 deletions(-) (limited to 'configd') diff --git a/configd/src/apps/sentinel/report-connectivity.cpp b/configd/src/apps/sentinel/report-connectivity.cpp index 4b5d38ed125..eceb2cf64aa 100644 --- a/configd/src/apps/sentinel/report-connectivity.cpp +++ b/configd/src/apps/sentinel/report-connectivity.cpp @@ -13,8 +13,7 @@ using namespace std::chrono_literals; namespace config::sentinel { - -ReportConnectivity::ReportConnectivity(FRT_RPCRequest *req, FRT_Supervisor &orb, ModelOwner &modelOwner) +ReportConnectivity::ReportConnectivity(FRT_RPCRequest *req, int timeout_ms, FRT_Supervisor &orb, ModelOwner &modelOwner) : _parentRequest(req), _orb(orb), _checks() @@ -25,7 +24,7 @@ ReportConnectivity::ReportConnectivity(FRT_RPCRequest *req, FRT_Supervisor &orb, LOG(debug, "making connectivity report for %zd peers", map.size()); _remaining = map.size(); for (const auto & [ hostname, port ] : map) { - _checks.emplace_back(std::make_unique(*this, hostname, port, _orb, 2500)); + _checks.emplace_back(std::make_unique(*this, hostname, port, _orb, timeout_ms)); } } else { _parentRequest->SetError(FRTE_RPC_METHOD_FAILED, "failed getting model config"); diff --git a/configd/src/apps/sentinel/report-connectivity.h b/configd/src/apps/sentinel/report-connectivity.h index b7b8100c6fa..057a374a387 100644 --- a/configd/src/apps/sentinel/report-connectivity.h +++ b/configd/src/apps/sentinel/report-connectivity.h @@ -20,7 +20,7 @@ namespace config::sentinel { class ReportConnectivity : public StatusCallback { public: - ReportConnectivity(FRT_RPCRequest *req, FRT_Supervisor &orb, ModelOwner &modelOwner); + ReportConnectivity(FRT_RPCRequest *req, int timeout_ms, FRT_Supervisor &orb, ModelOwner &modelOwner); virtual ~ReportConnectivity(); void returnStatus(bool ok) override; private: diff --git a/configd/src/apps/sentinel/rpchooks.cpp b/configd/src/apps/sentinel/rpchooks.cpp index 603fb461fe2..0d49063db84 100644 --- a/configd/src/apps/sentinel/rpchooks.cpp +++ b/configd/src/apps/sentinel/rpchooks.cpp @@ -55,9 +55,10 @@ RPCHooks::initRPC(FRT_Supervisor *supervisor) rb.ParamDesc("timeout", "Timeout for check in milliseconds"); rb.ReturnDesc("status", "Status (ok, bad, or unknown) for peer"); //------------------------------------------------------------------------- - rb.DefineMethod("sentinel.report.connectivity", "", "SS", + rb.DefineMethod("sentinel.report.connectivity", "i", "SS", FRT_METHOD(RPCHooks::rpc_reportConnectivity), this); rb.MethodDesc("report connectivity for peer sentinels"); + rb.ParamDesc("timeout", "Timeout for check in milliseconds"); rb.ReturnDesc("hostnames", "Names of peers checked"); rb.ReturnDesc("peerstatus", "Status description for each peer"); //------------------------------------------------------------------------- @@ -118,8 +119,10 @@ void RPCHooks::rpc_reportConnectivity(FRT_RPCRequest *req) { LOG(debug, "got reportConnectivity"); + FRT_Values &args = *req->GetParams(); + int timeout = args[0]._intval32; req->Detach(); - req->getStash().create(req, _orb, _modelOwner); + req->getStash().create(req, timeout, _orb, _modelOwner); } } // namespace slobrok -- cgit v1.2.3