summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Kosenkov <NKosenkov@IBS.RU>2022-10-14 14:10:11 +0300
committerNikita Kosenkov <NKosenkov@IBS.RU>2022-10-14 14:10:11 +0300
commit190c80712859231176f745041dd76f964127790c (patch)
treee773072fe069b65a9ea72d291d80f83368231b46
parentc402c904229489cc6aaee523b79e5ad740f6081c (diff)
downloadopenbmc-190c80712859231176f745041dd76f964127790c.tar.xz
SILABMC-353: srvcfg-manager: Added 120 seconds wait before init
-rw-r--r--meta-ibs/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager/0002-Added-120-seconds-wait-before-initialization.patch89
-rw-r--r--meta-ibs/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_%.bbappend1
2 files changed, 90 insertions, 0 deletions
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 <NKosenkov@IBS.RU>
+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<boost::asio::steady_timer> timer = nullptr;
+ std::unique_ptr<boost::asio::steady_timer> initTimer = nullptr;
++std::unique_ptr<boost::asio::steady_timer> waitTimer = nullptr;
+ std::map<std::string, std::shared_ptr<phosphor::service::ServiceConfig>>
+ srvMgrObjects;
+ static bool unitQueryStarted = false;
+@@ -281,7 +282,7 @@ void checkAndInit(sdbusplus::asio::object_server& server,
+ const std::variant<double_t>& 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<sdbusplus::asio::connection>(io);
+ timer = std::make_unique<boost::asio::steady_timer>(io);
+ initTimer = std::make_unique<boost::asio::steady_timer>(io);
++ waitTimer = std::make_unique<boost::asio::steady_timer>(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<sdbusplus::bus::match_t>(
+ static_cast<sdbusplus::bus_t&>(*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 \
"