mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-23 21:55:03 +02:00
cluster: Ignore old messages.
This commit is contained in:
parent
a00a28d31b
commit
82afdc92c8
@ -769,20 +769,28 @@ void ClusterComponent::AcknowledgementClearedHandler(const Service::Ptr& service
|
|||||||
|
|
||||||
void ClusterComponent::MessageHandler(const Endpoint::Ptr& sender, const Dictionary::Ptr& message)
|
void ClusterComponent::MessageHandler(const Endpoint::Ptr& sender, const Dictionary::Ptr& message)
|
||||||
{
|
{
|
||||||
if (message->Contains("ts") && sender->GetRemoteLogPosition() + 10 < message->Get("ts")) {
|
if (message->Contains("ts")) {
|
||||||
Dictionary::Ptr lparams = boost::make_shared<Dictionary>();
|
double ts = message->Get("ts");
|
||||||
lparams->Set("log_position", message->Get("ts"));
|
|
||||||
|
|
||||||
Dictionary::Ptr lmessage = boost::make_shared<Dictionary>();
|
/* ignore old messages */
|
||||||
lmessage->Set("jsonrpc", "2.0");
|
if (ts < sender->GetRemoteLogPosition())
|
||||||
lmessage->Set("method", "cluster::SetLogPosition");
|
return;
|
||||||
lmessage->Set("params", lparams);
|
|
||||||
|
|
||||||
sender->SendMessage(lmessage);
|
if (sender->GetRemoteLogPosition() + 10 < ts) {
|
||||||
|
Dictionary::Ptr lparams = boost::make_shared<Dictionary>();
|
||||||
|
lparams->Set("log_position", message->Get("ts"));
|
||||||
|
|
||||||
sender->SetRemoteLogPosition(message->Get("ts"));
|
Dictionary::Ptr lmessage = boost::make_shared<Dictionary>();
|
||||||
|
lmessage->Set("jsonrpc", "2.0");
|
||||||
|
lmessage->Set("method", "cluster::SetLogPosition");
|
||||||
|
lmessage->Set("params", lparams);
|
||||||
|
|
||||||
Log(LogInformation, "cluster", "Acknowledging log position for identity '" + sender->GetName() + "': " + Utility::FormatDateTime("%Y/%m/%d %H:%M:%S", message->Get("ts")));
|
sender->SendMessage(lmessage);
|
||||||
|
|
||||||
|
sender->SetRemoteLogPosition(message->Get("ts"));
|
||||||
|
|
||||||
|
Log(LogInformation, "cluster", "Acknowledging log position for identity '" + sender->GetName() + "': " + Utility::FormatDateTime("%Y/%m/%d %H:%M:%S", message->Get("ts")));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RelayMessage(sender, message, true);
|
RelayMessage(sender, message, true);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user