]> granicus.if.org Git - icinga2/commitdiff
Another bugfix for the event order.
authorGunnar Beutner <gunnar@beutner.name>
Thu, 29 Aug 2013 17:25:34 +0000 (19:25 +0200)
committerGunnar Beutner <gunnar@beutner.name>
Thu, 29 Aug 2013 17:25:34 +0000 (19:25 +0200)
lib/base/dynamicobject.cpp
lib/config/configitem.cpp
lib/icinga/host.cpp
lib/icinga/service-notification.cpp

index 683d0fde5983c2ed1106b2c06a3a11153a30b4f8..ba8828788b5cc87fc2436fb6610c6575067f765f 100644 (file)
@@ -292,6 +292,7 @@ void DynamicObject::RestoreObjects(const String& filename, int attributeTypes)
                        ASSERT(!object->IsActive());
                        Log(LogDebug, "base", "Restoring object '" + name + "' of type '" + type + "'.");
                        object->Deserialize(update, attributeTypes);
+                       object->OnStateLoaded();
                }
 
                restored++;
index 94b7e4015fb33c9cdf5f3f2a57736630df90f0fd..cfba85cc74ed9f41435eeaf672f10a51997346cb 100644 (file)
@@ -282,15 +282,16 @@ void ConfigItem::ActivateItems(void)
        /* restore the previous program state */
        DynamicObject::RestoreObjects(Application::GetStatePath());
 
-       BOOST_FOREACH(const DynamicObject::Ptr& object, objects) {
-               object->OnStateLoaded();
-       }
+       BOOST_FOREACH(const DynamicType::Ptr& type, DynamicType::GetTypes()) {
+               BOOST_FOREACH(const DynamicObject::Ptr& object, type->GetObjects()) {
+                       if (object->IsActive())
+                               continue;
 
-       BOOST_FOREACH(const DynamicObject::Ptr& object, objects) {
-               Log(LogDebug, "config", "Activating object '" + object->GetName() + "' of type '" + object->GetType()->GetName() + "'");
-               object->Start();
+                       Log(LogDebug, "config", "Activating object '" + object->GetName() + "' of type '" + object->GetType()->GetName() + "'");
+                       object->Start();
 
-               ASSERT(object->IsActive());
+                       ASSERT(object->IsActive());
+               }
        }
 }
 
index b886504e77dc73047bc2808c215d18c91744f5b6..5cbc2f021f4686980ee9bda52c4b784d65d14f75 100644 (file)
@@ -246,7 +246,7 @@ void Host::UpdateSlaveServices(void)
 
                ConfigItem::Ptr serviceItem = builder->Compile();
                DynamicObject::Ptr dobj = serviceItem->Commit();
-               dobj->Start();
+               dobj->OnConfigLoaded();
        }
 }
 
index d7c520f8ed59461ff69e80060527a64b51644185..f4b7685f3469737d7fe276eb04f649164da80871 100644 (file)
@@ -194,7 +194,7 @@ void Service::UpdateSlaveNotifications(void)
 
                        ConfigItem::Ptr notificationItem = builder->Compile();
                        DynamicObject::Ptr dobj = notificationItem->Commit();
-                       dobj->Start();
+                       dobj->OnConfigLoaded();
                }
        }
 }