Skip to content

Commit

Permalink
Merge pull request #10160 from Icinga/bugfix/do-not-sync-partially-in…
Browse files Browse the repository at this point in the history
…itialised-objects-214

IcingaDB: Don't sync partially initialised objects
  • Loading branch information
Al2Klimov committed Sep 18, 2024
2 parents 1d0a984 + bdc089b commit d94aa87
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions lib/icingadb/icingadb-objects.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down

0 comments on commit d94aa87

Please sign in to comment.