]> granicus.if.org Git - icinga2/commitdiff
DB IDO: Fix problem with hostgroup_members cleanup
authorMichael Friedrich <michael.friedrich@netways.de>
Mon, 8 Feb 2016 10:05:27 +0000 (11:05 +0100)
committerMichael Friedrich <michael.friedrich@netways.de>
Mon, 8 Feb 2016 10:05:27 +0000 (11:05 +0100)
fixes #11103

lib/db_ido/hostdbobject.cpp
lib/db_ido/servicedbobject.cpp

index 053860bfb33598312f30fbc6cecd5f94c23b7165..a4c629ff7ed31a654545a099fe2c5c893e85ee2d 100644 (file)
@@ -189,15 +189,16 @@ void HostDbObject::OnConfigUpdate(void)
                BOOST_FOREACH(const String& groupName, groups) {
                        HostGroup::Ptr group = HostGroup::GetByName(groupName);
 
+                       std::vector<DbQuery> queries;
+
                        DbQuery query1;
                        query1.Table = DbType::GetByName("HostGroup")->GetTable() + "_members";
                        query1.Type = DbQueryDelete;
                        query1.Category = DbCatConfig;
                        query1.WhereCriteria = new Dictionary();
                        query1.WhereCriteria->Set("instance_id", 0); /* DbConnection class fills in real ID */
-                       query1.WhereCriteria->Set("hostgroup_id", DbValue::FromObjectInsertID(group));
                        query1.WhereCriteria->Set("host_object_id", host);
-                       OnQuery(query1);
+                       queries.push_back(query1);
 
                        DbQuery query2;
                        query2.Table = DbType::GetByName("HostGroup")->GetTable() + "_members";
@@ -207,7 +208,9 @@ void HostDbObject::OnConfigUpdate(void)
                        query2.Fields->Set("instance_id", 0); /* DbConnection class fills in real ID */
                        query2.Fields->Set("hostgroup_id", DbValue::FromObjectInsertID(group));
                        query2.Fields->Set("host_object_id", host);
-                       OnQuery(query2);
+                       queries.push_back(query2);
+
+                       DbObject::OnMultipleQueries(queries);
                }
        }
 
index ef5f4e1b4b8b0f24966a95f9d7c4633f7d92fc6d..2f1e55bc3001a613931b31533a375af1a62486b2 100644 (file)
@@ -188,15 +188,16 @@ void ServiceDbObject::OnConfigUpdate(void)
                BOOST_FOREACH(const String& groupName, groups) {
                        ServiceGroup::Ptr group = ServiceGroup::GetByName(groupName);
 
+                       std::vector<DbQuery> queries;
+
                        DbQuery query1;
                        query1.Table = DbType::GetByName("ServiceGroup")->GetTable() + "_members";
                        query1.Type = DbQueryDelete;
                        query1.Category = DbCatConfig;
                        query1.WhereCriteria = new Dictionary();
                        query1.WhereCriteria->Set("instance_id", 0); /* DbConnection class fills in real ID */
-                       query1.WhereCriteria->Set("servicegroup_id", DbValue::FromObjectInsertID(group));
                        query1.WhereCriteria->Set("service_object_id", service);
-                       OnQuery(query1);
+                       queries.push_back(query1);
 
                        DbQuery query2;
                        query2.Table = DbType::GetByName("ServiceGroup")->GetTable() + "_members";
@@ -206,7 +207,9 @@ void ServiceDbObject::OnConfigUpdate(void)
                        query2.Fields->Set("instance_id", 0); /* DbConnection class fills in real ID */
                        query2.Fields->Set("servicegroup_id", DbValue::FromObjectInsertID(group));
                        query2.Fields->Set("service_object_id", service);
-                       OnQuery(query2);
+                       queries.push_back(query2);
+
+                       DbObject::OnMultipleQueries(queries);
                }
        }