From 6a5fc3f6ff77997705a77de7ac80fe4ebbc6de17 Mon Sep 17 00:00:00 2001 From: Souvik Roy Date: Wed, 8 Jan 2025 00:04:17 -0600 Subject: [PATCH] Remove redundant async call in FRU collection threads (#588) This commit removes the redundant std:async call in the detached thread launched for parsing and publishing the VPD for an individual FRU. Since we have a dedicated detached thread for each FRU, we can do VPD parse and publish in a synchronous manner from the detached thread itself, instead of launching a asynchronous task which adds unnecessary performance cost. This commit addresses issue #558. Test: ``` 1. Install bitbaked image on Everest (ever6bmc) 2. After initial boot, check: - BMC State Ready - vpd-manager's CollectionStatus property should be "Completed" busctl get-property com.ibm.VPD.Manager /com/ibm/VPD/Manager com.ibm.VPD.Manager CollectionStatus s "Completed" - vpd-manager status should be running with no restarts - vpd-manager should have only 1 thread running: check "ls -la /proc//task" 3. Reboot the BMC several times and repeat Step 2. ``` Change-Id: I603c64dc9b5057429a2288f0edfde6086755b851 Signed-off-by: Souvik Roy --- vpd-manager/src/worker.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/vpd-manager/src/worker.cpp b/vpd-manager/src/worker.cpp index 6fc901d0f..6eb31c1c8 100644 --- a/vpd-manager/src/worker.cpp +++ b/vpd-manager/src/worker.cpp @@ -1513,12 +1513,8 @@ void Worker::collectFrusFromJson() } std::thread{[vpdFilePath, this]() { - auto l_futureObject = std::async(&Worker::parseAndPublishVPD, this, - vpdFilePath); + const auto& l_parseResult = parseAndPublishVPD(vpdFilePath); - std::tuple l_threadInfo = l_futureObject.get(); - - // thread returned. m_mutex.lock(); m_activeCollectionThreadCount--; m_mutex.unlock();