From 8ee86c7b0f534fdfe5acd23f440ac7b61cd55ad8 Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Fri, 20 Mar 2026 14:12:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=97=B6=E7=9A=84=E7=AB=9E=E6=80=81=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E7=AD=89=E5=BE=85=E5=81=A5=E5=BA=B7=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E9=80=9A=E8=BF=87=E5=90=8E=E5=86=8D=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E5=B0=B1=E7=BB=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/services/opencodeService.ts | 21 ++++++++++++++------- electron/services/sddService.ts | 17 ++++++++++++++++- electron/services/terminalService.ts | 17 ++++++++++++++++- electron/services/xcOpenCodeWebService.ts | 17 ++++++++++++++++- 4 files changed, 62 insertions(+), 10 deletions(-) diff --git a/electron/services/opencodeService.ts b/electron/services/opencodeService.ts index d6ede19..c274af7 100644 --- a/electron/services/opencodeService.ts +++ b/electron/services/opencodeService.ts @@ -113,14 +113,21 @@ class OpenCodeService { this.process = null; }); - await new Promise((resolve) => { - setTimeout(resolve, 2000); - }); + const maxWaitTime = 30000; + const checkInterval = 500; + const startTime = Date.now(); - const isHealthy = await this.checkHealth(); - if (!isHealthy) { - log.warn('[OpenCodeService] Server started but health check failed, waiting longer...'); - await new Promise((resolve) => setTimeout(resolve, 3000)); + while (Date.now() - startTime < maxWaitTime) { + const isHealthy = await this.checkHealth(); + if (isHealthy) { + break; + } + await new Promise((resolve) => setTimeout(resolve, checkInterval)); + } + + const finalHealth = await this.checkHealth(); + if (!finalHealth) { + log.warn('[OpenCodeService] Health check failed after max wait time'); } this._isRunning = true; diff --git a/electron/services/sddService.ts b/electron/services/sddService.ts index 9112b1e..ab57863 100644 --- a/electron/services/sddService.ts +++ b/electron/services/sddService.ts @@ -125,7 +125,22 @@ class SDDService { this.processPid = null; }); - await new Promise((resolve) => setTimeout(resolve, 2000)); + const maxWaitTime = 30000; + const checkInterval = 500; + const startTime = Date.now(); + + while (Date.now() - startTime < maxWaitTime) { + const isHealthy = await this.checkHealth(); + if (isHealthy) { + break; + } + await new Promise((resolve) => setTimeout(resolve, checkInterval)); + } + + const finalHealth = await this.checkHealth(); + if (!finalHealth) { + log.warn('[SDDService] Health check failed after max wait time'); + } this._isRunning = true; this._isStarting = false; diff --git a/electron/services/terminalService.ts b/electron/services/terminalService.ts index 379c687..d0e6d7f 100644 --- a/electron/services/terminalService.ts +++ b/electron/services/terminalService.ts @@ -125,7 +125,22 @@ class TerminalService { this.processPid = null; }); - await new Promise((resolve) => setTimeout(resolve, 2000)); + const maxWaitTime = 30000; + const checkInterval = 500; + const startTime = Date.now(); + + while (Date.now() - startTime < maxWaitTime) { + const isHealthy = await this.checkHealth(); + if (isHealthy) { + break; + } + await new Promise((resolve) => setTimeout(resolve, checkInterval)); + } + + const finalHealth = await this.checkHealth(); + if (!finalHealth) { + log.warn('[TerminalService] Health check failed after max wait time'); + } this._isRunning = true; this._isStarting = false; diff --git a/electron/services/xcOpenCodeWebService.ts b/electron/services/xcOpenCodeWebService.ts index b6eb49e..0aab344 100644 --- a/electron/services/xcOpenCodeWebService.ts +++ b/electron/services/xcOpenCodeWebService.ts @@ -125,7 +125,22 @@ class XCOpenCodeWebService { this.processPid = null; }); - await new Promise((resolve) => setTimeout(resolve, 2000)); + const maxWaitTime = 30000; + const checkInterval = 500; + const startTime = Date.now(); + + while (Date.now() - startTime < maxWaitTime) { + const isHealthy = await this.checkHealth(); + if (isHealthy) { + break; + } + await new Promise((resolve) => setTimeout(resolve, checkInterval)); + } + + const finalHealth = await this.checkHealth(); + if (!finalHealth) { + log.warn('[XCOpenCodeWebService] Health check failed after max wait time'); + } this._isRunning = true; this._isStarting = false;