From 50e4a2adbcdce80f13c911bde07ecb66d2239845 Mon Sep 17 00:00:00 2001 From: Zhihe Li Date: Mon, 4 Dec 2023 12:23:29 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Do=20not=20stop=20client?= =?UTF-8?q?=20daemon=20if=20it=20was=20already=20started=20(#2021)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-11932 --- .../src/services/client-daemon-manager.js | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/ui/desktop/electron-app/src/services/client-daemon-manager.js b/ui/desktop/electron-app/src/services/client-daemon-manager.js index 54fcb6d77..dc5f3afa4 100644 --- a/ui/desktop/electron-app/src/services/client-daemon-manager.js +++ b/ui/desktop/electron-app/src/services/client-daemon-manager.js @@ -10,6 +10,7 @@ const runtimeSettings = require('./runtime-settings'); class ClientDaemonManager { #socketPath; + #isClientDaemonAlreadyRunning = true; get socketPath() { return this.#socketPath; @@ -33,14 +34,14 @@ class ClientDaemonManager { * @returns {Promise} */ async start() { - // TODO: Finalize how often the daemon should be refreshing - const startDaemonCommand = [ - 'daemon', - 'start', - '-refresh-interval-seconds', - '10', - ]; - await spawn(startDaemonCommand); + const startDaemonCommand = ['daemon', 'start']; + const { stderr } = await spawn(startDaemonCommand); + + // If we get a null/undefined, err on safe side and don't stop daemon when + // we close the desktop client + if (stderr && !stderr.includes('The daemon is already running')) { + this.#isClientDaemonAlreadyRunning = false; + } this.status(); } @@ -48,6 +49,10 @@ class ClientDaemonManager { * Stops the daemon. */ stop() { + if (this.#isClientDaemonAlreadyRunning) { + return; + } + const stopDaemonCommand = ['daemon', 'stop']; spawnSync(stopDaemonCommand); }