diff --git a/src/srvcfg_manager.cpp b/src/srvcfg_manager.cpp
index 679d5a5..6eaa611 100644
--- a/src/srvcfg_manager.cpp
+++ b/src/srvcfg_manager.cpp
@@ -501,31 +501,32 @@
             return;
         }
         updateInProgress = true;
-        boost::asio::spawn(conn->get_io_context(),
-                           [this](boost::asio::yield_context yield) {
-                               // Stop and apply configuration for all objects
-                               for (auto& srvMgrObj : srvMgrObjects)
-                               {
-                                   auto& srvObj = srvMgrObj.second;
-                                   if (srvObj->updatedFlag)
-                                   {
-                                       srvObj->stopAndApplyUnitConfig(yield);
-                                   }
-                               }
-                               // Do system reload
-                               systemdDaemonReload(conn, yield);
-                               // restart unit config.
-                               for (auto& srvMgrObj : srvMgrObjects)
-                               {
-                                   auto& srvObj = srvMgrObj.second;
-                                   if (srvObj->updatedFlag)
-                                   {
-                                       srvObj->restartUnitConfig(yield);
-                                   }
-                               }
-                               updateInProgress = false;
-                           },
-                           {});
+        (void)boost::asio::spawn(
+            conn->get_io_context(),
+            [this](boost::asio::yield_context yield) {
+                // Stop and apply configuration for all objects
+                for (auto& srvMgrObj : srvMgrObjects)
+                {
+                    auto& srvObj = srvMgrObj.second;
+                    if (srvObj->updatedFlag)
+                    {
+                        srvObj->stopAndApplyUnitConfig(yield);
+                    }
+                }
+                // Do system reload
+                systemdDaemonReload(conn, yield);
+                // restart unit config.
+                for (auto& srvMgrObj : srvMgrObjects)
+                {
+                    auto& srvObj = srvMgrObj.second;
+                    if (srvObj->updatedFlag)
+                    {
+                        srvObj->restartUnitConfig(yield);
+                    }
+                }
+                updateInProgress = false;
+            },
+            {});
     });
 }
 
