mirror of https://github.com/Icinga/icinga2.git
Merge pull request #8594 from Icinga/feature/remove-upq-from-activate-items
Remove upq from ConfigItem::ActivateItems
This commit is contained in:
commit
986bedd9a0
|
@ -275,11 +275,8 @@ int RunWorker(const std::vector<std::string>& configs, bool closeConsoleLog = fa
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
WorkQueue upq(25000, Configuration::Concurrency);
|
|
||||||
upq.SetName("DaemonCommand::Run");
|
|
||||||
|
|
||||||
// activate config only after daemonization: it starts threads and that is not compatible with fork()
|
// activate config only after daemonization: it starts threads and that is not compatible with fork()
|
||||||
if (!ConfigItem::ActivateItems(upq, newItems, false, false, true)) {
|
if (!ConfigItem::ActivateItems(newItems, false, false, true)) {
|
||||||
Log(LogCritical, "cli", "Error activating configuration.");
|
Log(LogCritical, "cli", "Error activating configuration.");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -624,7 +624,7 @@ bool ConfigItem::CommitItems(const ActivationContext::Ptr& context, WorkQueue& u
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ConfigItem::ActivateItems(WorkQueue& upq, const std::vector<ConfigItem::Ptr>& newItems, bool runtimeCreated,
|
bool ConfigItem::ActivateItems(const std::vector<ConfigItem::Ptr>& newItems, bool runtimeCreated,
|
||||||
bool silent, bool withModAttrs, const Value& cookie)
|
bool silent, bool withModAttrs, const Value& cookie)
|
||||||
{
|
{
|
||||||
static boost::mutex mtx;
|
static boost::mutex mtx;
|
||||||
|
@ -697,13 +697,6 @@ bool ConfigItem::ActivateItems(WorkQueue& upq, const std::vector<ConfigItem::Ptr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
upq.Join();
|
|
||||||
|
|
||||||
if (upq.HasExceptions()) {
|
|
||||||
upq.ReportExceptions("ConfigItem");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef I2_DEBUG
|
#ifdef I2_DEBUG
|
||||||
for (const ConfigItem::Ptr& item : newItems) {
|
for (const ConfigItem::Ptr& item : newItems) {
|
||||||
ConfigObject::Ptr object = item->m_Object;
|
ConfigObject::Ptr object = item->m_Object;
|
||||||
|
@ -738,7 +731,7 @@ bool ConfigItem::RunWithActivationContext(const Function::Ptr& function)
|
||||||
if (!CommitItems(scope.GetContext(), upq, newItems, true))
|
if (!CommitItems(scope.GetContext(), upq, newItems, true))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!ActivateItems(upq, newItems, false, true))
|
if (!ActivateItems(newItems, false, true))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -53,7 +53,7 @@ public:
|
||||||
const String& name);
|
const String& name);
|
||||||
|
|
||||||
static bool CommitItems(const ActivationContext::Ptr& context, WorkQueue& upq, std::vector<ConfigItem::Ptr>& newItems, bool silent = false);
|
static bool CommitItems(const ActivationContext::Ptr& context, WorkQueue& upq, std::vector<ConfigItem::Ptr>& newItems, bool silent = false);
|
||||||
static bool ActivateItems(WorkQueue& upq, const std::vector<ConfigItem::Ptr>& newItems, bool runtimeCreated = false,
|
static bool ActivateItems(const std::vector<ConfigItem::Ptr>& newItems, bool runtimeCreated = false,
|
||||||
bool silent = false, bool withModAttrs = false, const Value& cookie = Empty);
|
bool silent = false, bool withModAttrs = false, const Value& cookie = Empty);
|
||||||
|
|
||||||
static bool RunWithActivationContext(const Function::Ptr& function);
|
static bool RunWithActivationContext(const Function::Ptr& function);
|
||||||
|
|
|
@ -224,7 +224,7 @@ bool ConfigObjectUtility::CreateObject(const Type::Ptr& type, const String& full
|
||||||
* uq, items, runtimeCreated, silent, withModAttrs, cookie
|
* uq, items, runtimeCreated, silent, withModAttrs, cookie
|
||||||
* IMPORTANT: Forward the cookie aka origin in order to prevent sync loops in the same zone!
|
* IMPORTANT: Forward the cookie aka origin in order to prevent sync loops in the same zone!
|
||||||
*/
|
*/
|
||||||
if (!ConfigItem::ActivateItems(upq, newItems, true, true, false, cookie)) {
|
if (!ConfigItem::ActivateItems(newItems, true, true, false, cookie)) {
|
||||||
if (errors) {
|
if (errors) {
|
||||||
Log(LogNotice, "ConfigObjectUtility")
|
Log(LogNotice, "ConfigObjectUtility")
|
||||||
<< "Failed to activate config object '" << fullName << "'. Aborting and removing config path '" << path << "'.";
|
<< "Failed to activate config object '" << fullName << "'. Aborting and removing config path '" << path << "'.";
|
||||||
|
|
Loading…
Reference in New Issue