From 07e60c196156023c60afc50ea3beecd39ce0d3e5 Mon Sep 17 00:00:00 2001 From: Yonas Habteab Date: Fri, 9 Sep 2022 13:16:02 +0200 Subject: [PATCH 1/2] ConfigObject: Introduce new `icingadb_identifier` attr --- lib/base/configobject.ti | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/base/configobject.ti b/lib/base/configobject.ti index 432b3a79e..ea67dfa7b 100644 --- a/lib/base/configobject.ti +++ b/lib/base/configobject.ti @@ -88,6 +88,7 @@ abstract class ConfigObject : ConfigObjectBase < ConfigType [state, no_user_modify] double version { default {{{ return 0; }}} }; + [no_user_view, no_user_modify] String icingadb_identifier; }; } From 85c77bd878cd3db7b366d814a699e1662b20d94a Mon Sep 17 00:00:00 2001 From: Yonas Habteab Date: Fri, 9 Sep 2022 13:16:29 +0200 Subject: [PATCH 2/2] IcingaDB: Cache generated object hash --- lib/icingadb/icingadb-utility.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/icingadb/icingadb-utility.cpp b/lib/icingadb/icingadb-utility.cpp index bb24e0314..b247ed84a 100644 --- a/lib/icingadb/icingadb-utility.cpp +++ b/lib/icingadb/icingadb-utility.cpp @@ -62,7 +62,13 @@ String IcingaDB::FormatCommandLine(const Value& commandLine) String IcingaDB::GetObjectIdentifier(const ConfigObject::Ptr& object) { - return HashValue(new Array({m_EnvironmentId, object->GetName()})); + String identifier = object->GetIcingadbIdentifier(); + if (identifier.IsEmpty()) { + identifier = HashValue(new Array({m_EnvironmentId, object->GetName()})); + object->SetIcingadbIdentifier(identifier); + } + + return identifier; } /**