From 1a1f720c9380767848dbff63af64488e785a9bdf Mon Sep 17 00:00:00 2001 From: Rin Date: Sat, 14 Mar 2026 21:44:13 +0800 Subject: [PATCH] fix(server-runtime): shutdown server on interruption properly (#1356) Co-authored-by-agent: Claude Opus 4.6 --- packages/server-runtime/src/bin/run.ts | 15 ++++++++++++++- packages/server-runtime/src/server/index.ts | 6 ++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/server-runtime/src/bin/run.ts b/packages/server-runtime/src/bin/run.ts index cd02b0f02..f7aa7554d 100644 --- a/packages/server-runtime/src/bin/run.ts +++ b/packages/server-runtime/src/bin/run.ts @@ -1,6 +1,6 @@ #!/usr/bin/env tsx -import { env } from 'node:process' +import { env, exit } from 'node:process' import { createServer } from '../server' @@ -8,4 +8,17 @@ const server = createServer({ port: env.PORT ? Number.parseInt(env.PORT) : 6121, }) +let stopping = false + +async function shutdown() { + if (stopping) + return + stopping = true + await server.stop() + exit(0) +} + +process.on('SIGINT', shutdown) +process.on('SIGTERM', shutdown) + server.start() diff --git a/packages/server-runtime/src/server/index.ts b/packages/server-runtime/src/server/index.ts index 963f2002c..4691ac591 100644 --- a/packages/server-runtime/src/server/index.ts +++ b/packages/server-runtime/src/server/index.ts @@ -99,9 +99,7 @@ export function createServer(opts?: ServerOptions): Server { return } - if (!closeActiveConnections) { - log.withError(error).error('Error closing WebSocket server') - } + log.withError(error).error('Error closing WebSocket server') } finally { serverInstance = null @@ -175,7 +173,7 @@ export function createServer(opts?: ServerOptions): Server { } async function stop() { - await closeServer() + await closeServer(true) } async function restart() {