IcingaDB: Don't sync partially initialised objects

This commit is contained in:
Yonas Habteab 2024-09-11 14:08:27 +02:00
parent 8beb0b74ab
commit 26f43b0b48
1 changed files with 9 additions and 0 deletions

View File

@ -286,6 +286,15 @@ void IcingaDB::UpdateAllConfigObjects()
if (lcType != GetLowerCaseTypeNameDB(object))
continue;
// If we encounter not yet activated objects, i.e. they are currently being loaded and are about to
// be activated, but are still partially initialised, we want to exclude them from the config dump
// before we end up in a nullptr deference and crash the Icinga 2 process. Should these excluded
// objects later reach the activation process, they will be captured via the `OnActiveChanged` event
// and processed in IcingaDB::VersionChangedHandler() as runtime updates.
if (!object->IsActive()) {
continue;
}
std::vector<Dictionary::Ptr> runtimeUpdates;
CreateConfigUpdate(object, lcType, hMSets, runtimeUpdates, false);