Merge pull request #10162 from Icinga/unregister-invalid-objects-properly-2.14

Unregister invalid config objects properly
This commit is contained in:
Yonas Habteab 2024-09-20 11:28:33 +02:00 committed by GitHub
commit 2d9917a673
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -478,13 +478,16 @@ bool ConfigItem::CommitNewItems(const ActivationContext::Ptr& context, WorkQueue
continue;
std::atomic<int> committed_items(0);
std::mutex newItemsMutex;
{
auto items (itemsByType.find(type.get()));
if (items != itemsByType.end()) {
upq.ParallelFor(items->second, [&committed_items, &newItems, &newItemsMutex](const ItemPair& ip) {
for (const ItemPair& pair: items->second) {
newItems.emplace_back(pair.first);
}
upq.ParallelFor(items->second, [&committed_items](const ItemPair& ip) {
const ConfigItem::Ptr& item = ip.first;
if (!item->Commit(ip.second)) {
@ -496,9 +499,6 @@ bool ConfigItem::CommitNewItems(const ActivationContext::Ptr& context, WorkQueue
}
committed_items++;
std::unique_lock<std::mutex> lock(newItemsMutex);
newItems.emplace_back(item);
});
upq.Join();