]> granicus.if.org Git - icinga2/commitdiff
Fix cluster config sync timestamp
authorMichael Friedrich <michael.friedrich@netways.de>
Mon, 25 Jan 2016 13:25:37 +0000 (14:25 +0100)
committerGunnar Beutner <gunnar@beutner.name>
Tue, 23 Feb 2016 08:31:51 +0000 (09:31 +0100)
refs #11014

lib/remote/apilistener-filesync.cpp

index 00927e9dc75b379f5e47c02043eeb12452d64653..616bb3e663aa1ac56a4e13879dc9fd61c4086d4f 100644 (file)
@@ -58,14 +58,15 @@ bool ApiListener::UpdateConfigDir(const Dictionary::Ptr& oldConfig, const Dictio
 {
        bool configChange = false;
 
-       if (oldConfig->Contains(".timestamp") && newConfig->Contains(".timestamp")) {
-               double oldTS = Convert::ToDouble(oldConfig->Get(".timestamp"));
-               double newTS = Convert::ToDouble(newConfig->Get(".timestamp"));
+       if (!(oldConfig->Contains(".timestamp") && newConfig->Contains(".timestamp")))
+               return false;
 
-               /* skip update if our config is newer */
-               if (oldTS <= newTS)
-                       return false;
-       }
+       double oldTimestamp = Convert::ToDouble(oldConfig->Get(".timestamp"));
+       double newTimestamp = Convert::ToDouble(newConfig->Get(".timestamp"));
+
+       /* skip update if our config is newer */
+       if (oldTimestamp <= newTimestamp)
+               return false;
 
        {
                ObjectLock olock(newConfig);
@@ -99,7 +100,7 @@ bool ApiListener::UpdateConfigDir(const Dictionary::Ptr& oldConfig, const Dictio
        String tsPath = configDir + "/.timestamp";
        if (!Utility::PathExists(tsPath)) {
                std::ofstream fp(tsPath.CStr(), std::ofstream::out | std::ostream::trunc);
-               fp << std::fixed << Utility::GetTime();
+               fp << std::fixed << newTimestamp;
                fp.close();
        }