diff --git a/src/util/util/ipc/listener/RabbitMqSingleListener.ts b/src/util/util/ipc/listener/RabbitMqSingleListener.ts index b5fd5efd5..d120e70ac 100644 --- a/src/util/util/ipc/listener/RabbitMqSingleListener.ts +++ b/src/util/util/ipc/listener/RabbitMqSingleListener.ts @@ -51,7 +51,7 @@ export class RabbitMqSingleListener extends BaseEventListener { this.channel = await this.connection.createChannel(); for (const sig of ["SIGINT", "SIGTERM", "SIGQUIT"] as const) { - process.on(sig, this.close); + process.on(sig, () => this.close()); } this.connection.on("error", (err) => { diff --git a/src/util/util/ipc/listener/UnixSocketListener.ts b/src/util/util/ipc/listener/UnixSocketListener.ts index 8ead85bda..9465e9cad 100644 --- a/src/util/util/ipc/listener/UnixSocketListener.ts +++ b/src/util/util/ipc/listener/UnixSocketListener.ts @@ -26,6 +26,7 @@ export class UnixSocketListener extends BaseEventListener { eventEmitter: EventEmitter; socketPath: string; server: Server; + isInitialized = false; constructor(socketPath: string) { super(); @@ -47,7 +48,7 @@ export class UnixSocketListener extends BaseEventListener { this.server = net.createServer((socket) => { socket.on("connect", () => { - console.log("[UnixSocketListener] Unix socket client connected"); + console.log("[UnixSocketListener] Unix socket client connected, now at", this.server.connections, "connections..."); }); let buffer = Buffer.alloc(0); socket.on("data", (data: Buffer) => { @@ -74,15 +75,20 @@ export class UnixSocketListener extends BaseEventListener { }); this.server.listen(this.socketPath, () => { - console.log(`Unix socket server listening on ${this.socketPath}`); + console.log(`[UnixSocketListener] Listening on ${this.socketPath}`); }); for (const sig of ["SIGINT", "SIGTERM", "SIGQUIT"] as const) { - process.on(sig, this.close); + process.on(sig, () => this.close()); } + this.isInitialized = true; } async close(): Promise { + if (!this.isInitialized) { + console.log("[UnixSocketListener] close() called before init! - Path:", this.socketPath, " - server:", this.server, " - this:", this); + } + console.log("[UnixSocketListener] Closing unix socket server"); this.server.close(); @@ -92,8 +98,6 @@ export class UnixSocketListener extends BaseEventListener { } catch (e) { console.error("[UnixSocketListener] Failed to unlink socket file:", e); } - - process.exit(0); } async listen(event: string, callback: (event: EventOpts) => unknown): Promise<() => Promise> { diff --git a/src/util/util/ipc/writer/RabbitMqSingleWriter.ts b/src/util/util/ipc/writer/RabbitMqSingleWriter.ts index 28781c6db..72a0d08ce 100644 --- a/src/util/util/ipc/writer/RabbitMqSingleWriter.ts +++ b/src/util/util/ipc/writer/RabbitMqSingleWriter.ts @@ -47,7 +47,7 @@ export class RabbitMqSingleWriter extends BaseEventWriter { this.channel = await this.connection.createChannel(); for (const sig of ["SIGINT", "SIGTERM", "SIGQUIT"] as const) { - process.on(sig, this.close); + process.on(sig, () => this.close()); } this.connection.on("error", (err) => { diff --git a/src/util/util/ipc/writer/UnixSocketWriter.ts b/src/util/util/ipc/writer/UnixSocketWriter.ts index 53b9564ce..e3b91de8f 100644 --- a/src/util/util/ipc/writer/UnixSocketWriter.ts +++ b/src/util/util/ipc/writer/UnixSocketWriter.ts @@ -142,6 +142,10 @@ export class UnixSocketWriter extends BaseEventWriter { console.error("[UnixSocketWriter] Unix socket writer failed to read directory:", err); } + for (const sig of ["SIGINT", "SIGTERM", "SIGQUIT"] as const) { + process.on(sig, () => this.close()); + } + this.isInitializing = false; }