summary refs log tree commit diff
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-05-28 09:17:01 +0200
committerRory& <root@rory.gay>2026-05-28 09:17:01 +0200
commitced707abc728eff250317590aa5d148b3e436c57 (patch)
treeb47a16c03e08e0f3ed480fb3c52fb5648bab9bcd
parentGateway: send reconnect on shutdown (diff)
downloadserver-ts-ced707abc728eff250317590aa5d148b3e436c57.tar.xz
IPC: shutdown hooks
#Conflicts:
#	src/util/util/ipc/listener/UnixSocketListener.ts
-rw-r--r--src/util/util/ipc/listener/RabbitMqSingleListener.ts2
-rw-r--r--src/util/util/ipc/listener/UnixSocketListener.ts14
-rw-r--r--src/util/util/ipc/writer/RabbitMqSingleWriter.ts2
-rw-r--r--src/util/util/ipc/writer/UnixSocketWriter.ts4
4 files changed, 15 insertions, 7 deletions
diff --git a/src/util/util/ipc/listener/RabbitMqSingleListener.ts b/src/util/util/ipc/listener/RabbitMqSingleListener.ts

index b5fd5efd..d120e70a 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 8ead85bd..9465e9ca 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<void> { + 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<void>> { diff --git a/src/util/util/ipc/writer/RabbitMqSingleWriter.ts b/src/util/util/ipc/writer/RabbitMqSingleWriter.ts
index 28781c6d..72a0d08c 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 53b9564c..e3b91de8 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; }