From 6e1aaa5e0b41c46734856f2a89dd32de10533df7 Mon Sep 17 00:00:00 2001 From: Digital39999 Date: Sun, 17 Nov 2024 19:57:38 +0100 Subject: [PATCH] Bump package.json version to 1.8.6 and enhance process termination handling in Child and Worker classes --- package.json | 2 +- src/classes/child.ts | 7 ++++--- src/classes/worker.ts | 6 ++++-- src/plugins/heartbeat.ts | 3 +++ 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index a9adcbc..7bb7d57 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "1.8.5", + "version": "1.8.6", "name": "status-sharding", "author": "Digital39999", "scripts": { diff --git a/src/classes/child.ts b/src/classes/child.ts index 662ecc4..9674e55 100644 --- a/src/classes/child.ts +++ b/src/classes/child.ts @@ -96,19 +96,20 @@ export class Child { return false; } - this.process.removeAllListeners?.(); try { this.process.kill(); return new Promise((resolve, reject) => { - this.process?.once('exit', () => resolve(true)); + this.process?.once('exit', () => { + this.process?.removeAllListeners?.(); + resolve(true); + }); this.process?.once('error', (err) => { console.error('Error with child process:', err); reject(err); }); }); - return true; } catch (error) { console.error('Child termination failed:', error); return false; diff --git a/src/classes/worker.ts b/src/classes/worker.ts index a5fddf6..250ef12 100644 --- a/src/classes/worker.ts +++ b/src/classes/worker.ts @@ -74,12 +74,14 @@ export class Worker { return false; } - this.process.removeAllListeners?.(); try { this.process!.terminate(); return new Promise((resolve, reject) => { - this.process?.once('exit', () => resolve(true)); + this.process?.once('exit', () => { + this.process?.removeAllListeners?.(); + resolve(true); + }); this.process?.once('error', (err) => { console.error('Error with worker thread:', err); diff --git a/src/plugins/heartbeat.ts b/src/plugins/heartbeat.ts index 31d500c..38c777b 100644 --- a/src/plugins/heartbeat.ts +++ b/src/plugins/heartbeat.ts @@ -44,6 +44,7 @@ export class HeartbeatManager { } as BaseMessage<'heartbeat'>)?.catch(() => null); if (Date.now() - cluster.lastHeartbeatReceived > this.manager.options.heartbeat.timeout) { + this.manager._debug(`Cluster ${cluster.id} has missed a heartbeat. (${this.getClusterStats(cluster.id).missedBeats} missed)`); this.addMissedBeat(cluster.id); } else { const clusterData = this.getClusterStats(cluster.id); @@ -51,6 +52,8 @@ export class HeartbeatManager { clusterData.missedBeats = 0; this.beats.set(cluster.id, clusterData); } + + this.manager._debug(`Cluster ${cluster.id} has received a heartbeat.`); } } }, this.manager.options.heartbeat.interval);