From f37159fff385a9ce9e1ec2e06698bbbafba6469a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Ta=C5=84ski?= Date: Fri, 5 Mar 2021 10:15:59 +0100 Subject: [PATCH] [EGD-5918] The system should crash on init failure ServiceDB init process times out. Its timeout should be extended. --- module-services/service-db/ServiceDB.hpp | 1 + module-sys/SystemManager/SystemManager.cpp | 1 + module-sys/SystemManager/SystemManager.hpp | 7 +++++++ 3 files changed, 9 insertions(+) diff --git a/module-services/service-db/ServiceDB.hpp b/module-services/service-db/ServiceDB.hpp index 8b4f2479b412263d59dd959396d8ffb8723f75b4..941014b74199bbf849f31fc1154b57b9807148ac 100644 --- a/module-services/service-db/ServiceDB.hpp +++ b/module-services/service-db/ServiceDB.hpp @@ -108,6 +108,7 @@ namespace sys #if ENABLE_FILEINDEXER_SERVICE manifest.dependencies = {service::name::file_indexer.data()}; #endif + manifest.timeout = std::chrono::minutes{1}; return manifest; } }; diff --git a/module-sys/SystemManager/SystemManager.cpp b/module-sys/SystemManager/SystemManager.cpp index 80b93a01b3d942568573d919920a6b271fc07b82..6c1c6f736ce02a073049e63b2e43198eb0db6995 100644 --- a/module-sys/SystemManager/SystemManager.cpp +++ b/module-sys/SystemManager/SystemManager.cpp @@ -149,6 +149,7 @@ namespace sys const auto startTimeout = service.get().getStartTimeout().count(); if (const auto success = RunSystemService(service.get().create(), this, startTimeout); !success) { LOG_FATAL("Unable to start service: %s", service.get().getName().c_str()); + throw SystemInitialisationError{"System startup failed: unable to start a system service."}; } }); } diff --git a/module-sys/SystemManager/SystemManager.hpp b/module-sys/SystemManager/SystemManager.hpp index 96e2e4bd86d1ade6f059fa0492f9181cf8ce3265..94e018737444a00a8595f0cf8ab58aebf0543ca5 100644 --- a/module-sys/SystemManager/SystemManager.hpp +++ b/module-sys/SystemManager/SystemManager.hpp @@ -12,6 +12,7 @@ #define SYSTEMMANAGER_SYSTEMMANAGER_HPP_ #include +#include #include "thread.hpp" #include "condition_variable.hpp" #include "mutex.hpp" @@ -47,6 +48,12 @@ namespace sys None, }; + class SystemInitialisationError : public std::runtime_error + { + public: + using std::runtime_error::runtime_error; + }; + class SystemManagerCmd : public DataMessage { public: