nodejs-task-scheduler 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -26,6 +26,7 @@ export declare class MasterElection extends EventEmitter {
|
|
|
26
26
|
private queuePrefix;
|
|
27
27
|
private heartbeatTimer?;
|
|
28
28
|
private leadershipTimer?;
|
|
29
|
+
private cleanupTimer?;
|
|
29
30
|
private electionQueue;
|
|
30
31
|
private heartbeatQueue;
|
|
31
32
|
private lastHeartbeat?;
|
|
@@ -45,6 +46,8 @@ export declare class MasterElection extends EventEmitter {
|
|
|
45
46
|
private monitorLeaderHeartbeat;
|
|
46
47
|
private resetLeadershipTimeout;
|
|
47
48
|
private resignLeadership;
|
|
49
|
+
private startPeriodicCleanup;
|
|
50
|
+
private cleanupHeartbeatQueue;
|
|
48
51
|
private getQueueName;
|
|
49
52
|
}
|
|
50
53
|
//# sourceMappingURL=master-election.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"master-election.d.ts","sourceRoot":"","sources":["../../src/utils/master-election.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,oBAAY,eAAe;IACzB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAA6C;IAC1D,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAO;IAC7B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,oBAAoB;IAYlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"master-election.d.ts","sourceRoot":"","sources":["../../src/utils/master-election.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,oBAAY,eAAe;IACzB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAA6C;IAC1D,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAO;IAC7B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,oBAAoB;IAYlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B3B,QAAQ,IAAI,OAAO;IAInB,SAAS,IAAI,MAAM;IAInB,QAAQ,IAAI,eAAe;YAIb,gBAAgB;YA+BhB,aAAa;YAYb,iBAAiB;YA2BjB,YAAY;YAoBZ,cAAc;YAuBd,aAAa;YAuCb,sBAAsB;IAoCpC,OAAO,CAAC,sBAAsB;YAahB,gBAAgB;IAuB9B,OAAO,CAAC,oBAAoB;YAmBd,qBAAqB;IAenC,OAAO,CAAC,YAAY;CAGrB"}
|
|
@@ -28,6 +28,7 @@ class MasterElection extends events_1.EventEmitter {
|
|
|
28
28
|
}
|
|
29
29
|
this.isRunning = true;
|
|
30
30
|
await this.initializeQueues();
|
|
31
|
+
this.startPeriodicCleanup();
|
|
31
32
|
await this.startElection();
|
|
32
33
|
}
|
|
33
34
|
async stop() {
|
|
@@ -41,9 +42,14 @@ class MasterElection extends events_1.EventEmitter {
|
|
|
41
42
|
if (this.leadershipTimer) {
|
|
42
43
|
clearTimeout(this.leadershipTimer);
|
|
43
44
|
}
|
|
45
|
+
if (this.cleanupTimer) {
|
|
46
|
+
clearInterval(this.cleanupTimer);
|
|
47
|
+
}
|
|
44
48
|
if (this.state === LeadershipState.LEADER) {
|
|
45
49
|
await this.resignLeadership();
|
|
46
50
|
}
|
|
51
|
+
// Clean up heartbeat queue
|
|
52
|
+
await this.cleanupHeartbeatQueue();
|
|
47
53
|
console.log(`Node ${this.nodeId} stopped master election`);
|
|
48
54
|
}
|
|
49
55
|
isLeader() {
|
|
@@ -63,12 +69,23 @@ class MasterElection extends events_1.EventEmitter {
|
|
|
63
69
|
durable: false,
|
|
64
70
|
autoDelete: false
|
|
65
71
|
});
|
|
66
|
-
// Heartbeat
|
|
72
|
+
// Heartbeat exchange - use fanout for better distribution
|
|
73
|
+
await channel.assertExchange('leader-heartbeat-exchange', 'fanout', {
|
|
74
|
+
durable: false,
|
|
75
|
+
autoDelete: false
|
|
76
|
+
});
|
|
77
|
+
// Heartbeat queue - with TTL and auto-cleanup
|
|
67
78
|
await channel.assertQueue(this.heartbeatQueue, {
|
|
68
79
|
exclusive: false,
|
|
69
80
|
durable: false,
|
|
70
|
-
autoDelete:
|
|
81
|
+
autoDelete: true,
|
|
82
|
+
arguments: {
|
|
83
|
+
'x-message-ttl': this.heartbeatInterval * 3, // Messages expire after 3 heartbeat intervals
|
|
84
|
+
'x-expires': this.leadershipTimeout * 2 // Queue expires if unused
|
|
85
|
+
}
|
|
71
86
|
});
|
|
87
|
+
// Bind heartbeat queue to exchange
|
|
88
|
+
await channel.bindQueue(this.heartbeatQueue, 'leader-heartbeat-exchange', '');
|
|
72
89
|
}
|
|
73
90
|
async startElection() {
|
|
74
91
|
try {
|
|
@@ -151,7 +168,10 @@ class MasterElection extends events_1.EventEmitter {
|
|
|
151
168
|
timestamp: new Date(),
|
|
152
169
|
state: this.state
|
|
153
170
|
};
|
|
154
|
-
await channel.publish('',
|
|
171
|
+
await channel.publish('leader-heartbeat-exchange', '', Buffer.from(JSON.stringify(heartbeatMessage)), {
|
|
172
|
+
persistent: false,
|
|
173
|
+
expiration: (this.heartbeatInterval * 2).toString() // Message expires in 2 heartbeat intervals
|
|
174
|
+
});
|
|
155
175
|
this.lastHeartbeat = new Date();
|
|
156
176
|
this.resetLeadershipTimeout();
|
|
157
177
|
this.emit('heartbeat', {
|
|
@@ -222,6 +242,37 @@ class MasterElection extends events_1.EventEmitter {
|
|
|
222
242
|
}
|
|
223
243
|
await this.becomeFollower();
|
|
224
244
|
}
|
|
245
|
+
startPeriodicCleanup() {
|
|
246
|
+
// Clean up heartbeat queue every minute to prevent message buildup
|
|
247
|
+
this.cleanupTimer = setInterval(async () => {
|
|
248
|
+
if (this.isRunning && this.state === LeadershipState.FOLLOWER) {
|
|
249
|
+
try {
|
|
250
|
+
const channel = this.connection.getChannel();
|
|
251
|
+
// Only purge if queue has too many messages (check queue info)
|
|
252
|
+
const queueInfo = await channel.checkQueue(this.heartbeatQueue);
|
|
253
|
+
if (queueInfo.messageCount > 50) { // Threshold to prevent excessive cleanup
|
|
254
|
+
await channel.purgeQueue(this.heartbeatQueue);
|
|
255
|
+
console.log(`Cleaned up ${queueInfo.messageCount} old heartbeat messages for node ${this.nodeId}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
// Queue might not exist yet, ignore error
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}, 60000); // Every minute
|
|
263
|
+
}
|
|
264
|
+
async cleanupHeartbeatQueue() {
|
|
265
|
+
try {
|
|
266
|
+
const channel = this.connection.getChannel();
|
|
267
|
+
// Purge any remaining messages from heartbeat queue
|
|
268
|
+
await channel.purgeQueue(this.heartbeatQueue);
|
|
269
|
+
// Delete the heartbeat queue if it exists and is empty
|
|
270
|
+
await channel.deleteQueue(this.heartbeatQueue, { ifEmpty: true });
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
console.warn(`Error cleaning up heartbeat queue for node ${this.nodeId}:`, error);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
225
276
|
getQueueName(baseName) {
|
|
226
277
|
return this.queuePrefix ? `${this.queuePrefix}${baseName}` : baseName;
|
|
227
278
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"master-election.js","sourceRoot":"","sources":["../../src/utils/master-election.ts"],"names":[],"mappings":";;;AAAA,+BAAoC;AAEpC,mCAAsC;AAUtC,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,wCAAqB,CAAA;IACrB,0CAAuB,CAAA;IACvB,oCAAiB,CAAA;AACnB,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAQD,MAAa,cAAe,SAAQ,qBAAY;
|
|
1
|
+
{"version":3,"file":"master-election.js","sourceRoot":"","sources":["../../src/utils/master-election.ts"],"names":[],"mappings":"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"}
|