From 3533ddd0107b2fa568bc7d7e31e5f54dd289ff5d Mon Sep 17 00:00:00 2001 From: Michael Friedrich Date: Sat, 18 Jan 2020 17:09:09 +0100 Subject: [PATCH] Graphite/OpenTSDB: Ensure that Reconnect failure is detected fixes #7729 --- lib/perfdata/graphitewriter.cpp | 4 ++++ lib/perfdata/opentsdbwriter.cpp | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/perfdata/graphitewriter.cpp b/lib/perfdata/graphitewriter.cpp index 2e24eea33..f3c789e5e 100644 --- a/lib/perfdata/graphitewriter.cpp +++ b/lib/perfdata/graphitewriter.cpp @@ -194,6 +194,10 @@ void GraphiteWriter::ReconnectInternal() } catch (const std::exception& ex) { Log(LogWarning, "GraphiteWriter") << "Can't connect to Graphite on host '" << GetHost() << "' port '" << GetPort() << ".'"; + + SetConnected(false); + + throw; } SetConnected(true); diff --git a/lib/perfdata/opentsdbwriter.cpp b/lib/perfdata/opentsdbwriter.cpp index 4ed02b873..3885d746f 100644 --- a/lib/perfdata/opentsdbwriter.cpp +++ b/lib/perfdata/opentsdbwriter.cpp @@ -115,8 +115,10 @@ void OpenTsdbWriter::ReconnectTimerHandler() if (GetConnected()) return; + double startTime = Utility::GetTime(); + Log(LogNotice, "OpenTsdbWriter") - << "Reconnect to OpenTSDB TSD on host '" << GetHost() << "' port '" << GetPort() << "'."; + << "Reconnecting to OpenTSDB TSD on host '" << GetHost() << "' port '" << GetPort() << "'."; /* * We're using telnet as input method. Future PRs may change this into using the HTTP API. @@ -129,9 +131,16 @@ void OpenTsdbWriter::ReconnectTimerHandler() } catch (const std::exception& ex) { Log(LogWarning, "OpenTsdbWriter") << "Can't connect to OpenTSDB on host '" << GetHost() << "' port '" << GetPort() << ".'"; + + SetConnected(false); + + return; } SetConnected(true); + + Log(LogInformation, "OpenTsdbWriter") + << "Finished reconnecting to OpenTSDB in " << std::setw(2) << Utility::GetTime() - startTime << " second(s)."; } /**