Merge pull request #8142 from Icinga/bugfix/don-not-close-connection-on-missing-heartbeat-8095

Remove all codes related to the heartbeat timeout
This commit is contained in:
Noah Hilverling 2020-07-29 15:33:22 +02:00 committed by GitHub
commit a615b2126e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 33 deletions

View File

@ -15,6 +15,12 @@ using namespace icinga;
REGISTER_APIFUNCTION(Heartbeat, event, &JsonRpcConnection::HeartbeatAPIHandler);
/**
* We still send a heartbeat without timeout here
* to keep the m_Seen variable up to date. This is to keep the
* cluster connection alive when there isn't much going on.
*/
void JsonRpcConnection::HandleAndWriteHeartbeats(boost::asio::yield_context yc)
{
boost::system::error_code ec;
@ -26,44 +32,17 @@ void JsonRpcConnection::HandleAndWriteHeartbeats(boost::asio::yield_context yc)
if (m_ShuttingDown) {
break;
}
if (m_NextHeartbeat != 0 && m_NextHeartbeat < Utility::GetTime()) {
{
Log logMsg (LogWarning, "JsonRpcConnection");
if (m_Endpoint) {
logMsg << "Client for endpoint '" << m_Endpoint->GetName() << "'";
} else {
logMsg << "Anonymous client";
}
logMsg << " has requested heartbeat message but hasn't responded in time. Closing connection.";
}
Disconnect();
break;
}
if (m_Endpoint) {
SendMessageInternal(new Dictionary({
{ "jsonrpc", "2.0" },
{ "method", "event::Heartbeat" },
{ "params", new Dictionary({
{ "timeout", 120 }
}) }
}));
}
SendMessageInternal(new Dictionary({
{ "jsonrpc", "2.0" },
{ "method", "event::Heartbeat" },
{ "params", new Dictionary() }
}));
}
}
Value JsonRpcConnection::HeartbeatAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params)
{
Value vtimeout = params->Get("timeout");
if (!vtimeout.IsEmpty()) {
origin->FromClient->m_NextHeartbeat = Utility::GetTime() + vtimeout;
}
return Empty;
}