From 190c80712859231176f745041dd76f964127790c Mon Sep 17 00:00:00 2001 From: Nikita Kosenkov Date: Fri, 14 Oct 2022 14:10:11 +0300 Subject: SILABMC-353: srvcfg-manager: Added 120 seconds wait before init --- ...ed-120-seconds-wait-before-initialization.patch | 89 ++++++++++++++++++++++ .../srvcfg-manager/srvcfg-manager_%.bbappend | 1 + 2 files changed, 90 insertions(+) create mode 100644 meta-ibs/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager/0002-Added-120-seconds-wait-before-initialization.patch diff --git a/meta-ibs/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager/0002-Added-120-seconds-wait-before-initialization.patch b/meta-ibs/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager/0002-Added-120-seconds-wait-before-initialization.patch new file mode 100644 index 0000000000..5e3c065726 --- /dev/null +++ b/meta-ibs/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager/0002-Added-120-seconds-wait-before-initialization.patch @@ -0,0 +1,89 @@ +From e4a7079d18be167845462f33071d287c23118e79 Mon Sep 17 00:00:00 2001 +From: Nikita Kosenkov +Date: Fri, 14 Oct 2022 13:51:57 +0300 +Subject: [PATCH] Added 120 seconds wait before initialization + +--- + src/main.cpp | 19 +++++++++++++++++-- + srvcfg-manager.service | 3 --- + 2 files changed, 17 insertions(+), 5 deletions(-) + +diff --git a/src/main.cpp b/src/main.cpp +index b62c29e..e5fca0a 100644 +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -27,6 +27,7 @@ + + std::unique_ptr timer = nullptr; + std::unique_ptr initTimer = nullptr; ++std::unique_ptr waitTimer = nullptr; + std::map> + srvMgrObjects; + static bool unitQueryStarted = false; +@@ -281,7 +282,7 @@ void checkAndInit(sdbusplus::asio::object_server& server, + const std::variant& value) { + if (ec) + { +- lg2::error("async_method_call error: ListUnits failed: {EC}", ++ lg2::error("async_method_call error: Progress failed: {EC}", + "EC", ec.value()); + return; + } +@@ -319,6 +320,7 @@ void checkAndInit(sdbusplus::asio::object_server& server, + "EC", ec.value()); + return; + } ++ + checkAndInit(server, conn); + }); + } +@@ -333,9 +335,11 @@ int main() + auto conn = std::make_shared(io); + timer = std::make_unique(io); + initTimer = std::make_unique(io); ++ waitTimer = std::make_unique(io); + conn->request_name(phosphor::service::serviceConfigSrvName); + auto server = sdbusplus::asio::object_server(conn, true); + server.add_manager(phosphor::service::srcCfgMgrBasePath); ++ + // Initialize the objects after systemd indicated startup finished. + auto userUpdatedSignal = std::make_unique( + static_cast(*conn), +@@ -349,9 +353,20 @@ int main() + init(server, conn); + } + }); ++ + // this will make sure to initialize the objects, when daemon is + // restarted. +- checkAndInit(server, conn); ++ constexpr size_t watiTimeout = 120; // seconds ++ waitTimer->expires_after(std::chrono::seconds(watiTimeout)); ++ waitTimer->async_wait([&server, &conn]( ++ const boost::system::error_code& ec) { ++ if (ec == boost::asio::error::operation_aborted) ++ { ++ // Timer reset. ++ return; ++ } ++ checkAndInit(server, conn); ++ }); + + io.run(); + +diff --git a/srvcfg-manager.service b/srvcfg-manager.service +index 1d272bc..b7b22df 100644 +--- a/srvcfg-manager.service ++++ b/srvcfg-manager.service +@@ -1,8 +1,5 @@ + [Unit] + Description=Daemon to control service configuration +-After=start-ipkvm.service bmcweb.service +-After=phosphor-ipmi-net@.service dropbear@.service +-After=phosphor-ipmi-kcs@.service obmc-console@.service + + [Service] + Restart=always +-- +2.35.1 + diff --git a/meta-ibs/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_%.bbappend b/meta-ibs/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_%.bbappend index 9b7450bb19..5b9ba82ca8 100644 --- a/meta-ibs/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_%.bbappend +++ b/meta-ibs/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_%.bbappend @@ -2,4 +2,5 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" SRC_URI += "\ file://0001-Added-dependencies-to-controlled-services.patch \ + file://0002-Added-120-seconds-wait-before-initialization.patch \ " -- cgit v1.2.3