nodejs-task-scheduler 1.0.10 → 1.0.12

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.
Files changed (63) hide show
  1. package/.claude/settings.local.json +0 -0
  2. package/.github/workflows/ci.yml +0 -0
  3. package/.github/workflows/release.yml +0 -0
  4. package/.output.txt +296 -0
  5. package/CHANGELOG.md +0 -0
  6. package/MULTINODE-TEST.md +0 -0
  7. package/README.md +0 -0
  8. package/dist/decorators/index.d.ts +0 -0
  9. package/dist/decorators/index.d.ts.map +0 -0
  10. package/dist/decorators/index.js +0 -0
  11. package/dist/decorators/index.js.map +0 -0
  12. package/dist/decorators/metadata.d.ts +0 -0
  13. package/dist/decorators/metadata.d.ts.map +0 -0
  14. package/dist/decorators/metadata.js +0 -0
  15. package/dist/decorators/metadata.js.map +0 -0
  16. package/dist/decorators/registry.d.ts +0 -0
  17. package/dist/decorators/registry.d.ts.map +0 -0
  18. package/dist/decorators/registry.js +0 -0
  19. package/dist/decorators/registry.js.map +0 -0
  20. package/dist/index.d.ts +0 -0
  21. package/dist/index.d.ts.map +0 -0
  22. package/dist/index.js +0 -0
  23. package/dist/index.js.map +0 -0
  24. package/dist/queue/index.d.ts +0 -0
  25. package/dist/queue/index.d.ts.map +0 -0
  26. package/dist/queue/index.js +0 -0
  27. package/dist/queue/index.js.map +0 -0
  28. package/dist/scheduler/index.d.ts +0 -0
  29. package/dist/scheduler/index.d.ts.map +0 -0
  30. package/dist/scheduler/index.js +0 -0
  31. package/dist/scheduler/index.js.map +0 -0
  32. package/dist/types/index.d.ts +0 -0
  33. package/dist/types/index.d.ts.map +0 -0
  34. package/dist/types/index.js +0 -0
  35. package/dist/types/index.js.map +0 -0
  36. package/dist/utils/load-balancer.d.ts +0 -0
  37. package/dist/utils/load-balancer.d.ts.map +0 -0
  38. package/dist/utils/load-balancer.js +0 -0
  39. package/dist/utils/load-balancer.js.map +0 -0
  40. package/dist/utils/master-election.d.ts +1 -0
  41. package/dist/utils/master-election.d.ts.map +1 -1
  42. package/dist/utils/master-election.js +36 -3
  43. package/dist/utils/master-election.js.map +1 -1
  44. package/dist/utils/rabbitmq.d.ts +1 -0
  45. package/dist/utils/rabbitmq.d.ts.map +1 -1
  46. package/dist/utils/rabbitmq.js +6 -0
  47. package/dist/utils/rabbitmq.js.map +1 -1
  48. package/dist/worker/index.d.ts +0 -0
  49. package/dist/worker/index.d.ts.map +0 -0
  50. package/dist/worker/index.js +0 -0
  51. package/dist/worker/index.js.map +0 -0
  52. package/docker-rabbitmq.sh +0 -0
  53. package/nul +1 -0
  54. package/package.json +63 -63
  55. package/run-multinode-test.sh +0 -0
  56. package/test-multinode.ts +45 -34
  57. package/test-quick-election.ts +0 -0
  58. package/test-simple-election.ts +0 -0
  59. package/test-simple-multinode.ts +0 -0
  60. package/dist/__tests__/setup.d.ts +0 -2
  61. package/dist/__tests__/setup.d.ts.map +0 -1
  62. package/dist/__tests__/setup.js +0 -24
  63. package/dist/__tests__/setup.js.map +0 -1
File without changes
File without changes
File without changes
package/.output.txt ADDED
@@ -0,0 +1,296 @@
1
+ 🚀 Starting multi-node master election test with prefix: njs_testing_
2
+ 📡 Starting nodes...
3
+ Starting node-1...
4
+ Failed to connect to RabbitMQ: AggregateError
5
+ at internalConnectMultiple (node:net:1139:18)
6
+ at afterConnectMultiple (node:net:1712:7) {
7
+ code: 'ECONNREFUSED',
8
+ [errors]: [
9
+ Error: connect ECONNREFUSED ::1:5672
10
+ at createConnectionError (node:net:1675:14)
11
+ at afterConnectMultiple (node:net:1705:16) {
12
+ errno: -4078,
13
+ code: 'ECONNREFUSED',
14
+ syscall: 'connect',
15
+ address: '::1',
16
+ port: 5672
17
+ },
18
+ Error: connect ECONNREFUSED 127.0.0.1:5672
19
+ at createConnectionError (node:net:1675:14)
20
+ at afterConnectMultiple (node:net:1705:16) {
21
+ errno: -4078,
22
+ code: 'ECONNREFUSED',
23
+ syscall: 'connect',
24
+ address: '127.0.0.1',
25
+ port: 5672
26
+ }
27
+ ]
28
+ }
29
+ Failed to connect to RabbitMQ: AggregateError
30
+ at internalConnectMultiple (node:net:1139:18)
31
+ at afterConnectMultiple (node:net:1712:7) {
32
+ code: 'ECONNREFUSED',
33
+ [errors]: [
34
+ Error: connect ECONNREFUSED ::1:5672
35
+ at createConnectionError (node:net:1675:14)
36
+ at afterConnectMultiple (node:net:1705:16) {
37
+ errno: -4078,
38
+ code: 'ECONNREFUSED',
39
+ syscall: 'connect',
40
+ address: '::1',
41
+ port: 5672
42
+ },
43
+ Error: connect ECONNREFUSED 127.0.0.1:5672
44
+ at createConnectionError (node:net:1675:14)
45
+ at afterConnectMultiple (node:net:1705:16) {
46
+ errno: -4078,
47
+ code: 'ECONNREFUSED',
48
+ syscall: 'connect',
49
+ address: '127.0.0.1',
50
+ port: 5672
51
+ }
52
+ ]
53
+ }
54
+ Failed to connect to RabbitMQ: AggregateError
55
+ at internalConnectMultiple (node:net:1139:18)
56
+ at afterConnectMultiple (node:net:1712:7) {
57
+ code: 'ECONNREFUSED',
58
+ [errors]: [
59
+ Error: connect ECONNREFUSED ::1:5672
60
+ at createConnectionError (node:net:1675:14)
61
+ at afterConnectMultiple (node:net:1705:16) {
62
+ errno: -4078,
63
+ code: 'ECONNREFUSED',
64
+ syscall: 'connect',
65
+ address: '::1',
66
+ port: 5672
67
+ },
68
+ Error: connect ECONNREFUSED 127.0.0.1:5672
69
+ at createConnectionError (node:net:1675:14)
70
+ at afterConnectMultiple (node:net:1705:16) {
71
+ errno: -4078,
72
+ code: 'ECONNREFUSED',
73
+ syscall: 'connect',
74
+ address: '127.0.0.1',
75
+ port: 5672
76
+ }
77
+ ]
78
+ }
79
+ Failed to connect to RabbitMQ: AggregateError
80
+ at internalConnectMultiple (node:net:1139:18)
81
+ at afterConnectMultiple (node:net:1712:7) {
82
+ code: 'ECONNREFUSED',
83
+ [errors]: [
84
+ Error: connect ECONNREFUSED ::1:5672
85
+ at createConnectionError (node:net:1675:14)
86
+ at afterConnectMultiple (node:net:1705:16) {
87
+ errno: -4078,
88
+ code: 'ECONNREFUSED',
89
+ syscall: 'connect',
90
+ address: '::1',
91
+ port: 5672
92
+ },
93
+ Error: connect ECONNREFUSED 127.0.0.1:5672
94
+ at createConnectionError (node:net:1675:14)
95
+ at afterConnectMultiple (node:net:1705:16) {
96
+ errno: -4078,
97
+ code: 'ECONNREFUSED',
98
+ syscall: 'connect',
99
+ address: '127.0.0.1',
100
+ port: 5672
101
+ }
102
+ ]
103
+ }
104
+ Attempting to reconnect (4/10)...
105
+ Failed to connect to RabbitMQ: AggregateError
106
+ at internalConnectMultiple (node:net:1139:18)
107
+ at afterConnectMultiple (node:net:1712:7) {
108
+ code: 'ECONNREFUSED',
109
+ [errors]: [
110
+ Error: connect ECONNREFUSED ::1:5672
111
+ at createConnectionError (node:net:1675:14)
112
+ at afterConnectMultiple (node:net:1705:16) {
113
+ errno: -4078,
114
+ code: 'ECONNREFUSED',
115
+ syscall: 'connect',
116
+ address: '::1',
117
+ port: 5672
118
+ },
119
+ Error: connect ECONNREFUSED 127.0.0.1:5672
120
+ at createConnectionError (node:net:1675:14)
121
+ at afterConnectMultiple (node:net:1705:16) {
122
+ errno: -4078,
123
+ code: 'ECONNREFUSED',
124
+ syscall: 'connect',
125
+ address: '127.0.0.1',
126
+ port: 5672
127
+ }
128
+ ]
129
+ }
130
+ Attempting to reconnect (5/10)...
131
+ Failed to connect to RabbitMQ: AggregateError
132
+ at internalConnectMultiple (node:net:1139:18)
133
+ at afterConnectMultiple (node:net:1712:7) {
134
+ code: 'ECONNREFUSED',
135
+ [errors]: [
136
+ Error: connect ECONNREFUSED ::1:5672
137
+ at createConnectionError (node:net:1675:14)
138
+ at afterConnectMultiple (node:net:1705:16) {
139
+ errno: -4078,
140
+ code: 'ECONNREFUSED',
141
+ syscall: 'connect',
142
+ address: '::1',
143
+ port: 5672
144
+ },
145
+ Error: connect ECONNREFUSED 127.0.0.1:5672
146
+ at createConnectionError (node:net:1675:14)
147
+ at afterConnectMultiple (node:net:1705:16) {
148
+ errno: -4078,
149
+ code: 'ECONNREFUSED',
150
+ syscall: 'connect',
151
+ address: '127.0.0.1',
152
+ port: 5672
153
+ }
154
+ ]
155
+ }
156
+ Attempting to reconnect (6/10)...
157
+ Failed to connect to RabbitMQ: AggregateError
158
+ at internalConnectMultiple (node:net:1139:18)
159
+ at afterConnectMultiple (node:net:1712:7) {
160
+ code: 'ECONNREFUSED',
161
+ [errors]: [
162
+ Error: connect ECONNREFUSED ::1:5672
163
+ at createConnectionError (node:net:1675:14)
164
+ at afterConnectMultiple (node:net:1705:16) {
165
+ errno: -4078,
166
+ code: 'ECONNREFUSED',
167
+ syscall: 'connect',
168
+ address: '::1',
169
+ port: 5672
170
+ },
171
+ Error: connect ECONNREFUSED 127.0.0.1:5672
172
+ at createConnectionError (node:net:1675:14)
173
+ at afterConnectMultiple (node:net:1705:16) {
174
+ errno: -4078,
175
+ code: 'ECONNREFUSED',
176
+ syscall: 'connect',
177
+ address: '127.0.0.1',
178
+ port: 5672
179
+ }
180
+ ]
181
+ }
182
+ Attempting to reconnect (7/10)...
183
+ Failed to connect to RabbitMQ: AggregateError
184
+ at internalConnectMultiple (node:net:1139:18)
185
+ at afterConnectMultiple (node:net:1712:7) {
186
+ code: 'ECONNREFUSED',
187
+ [errors]: [
188
+ Error: connect ECONNREFUSED ::1:5672
189
+ at createConnectionError (node:net:1675:14)
190
+ at afterConnectMultiple (node:net:1705:16) {
191
+ errno: -4078,
192
+ code: 'ECONNREFUSED',
193
+ syscall: 'connect',
194
+ address: '::1',
195
+ port: 5672
196
+ },
197
+ Error: connect ECONNREFUSED 127.0.0.1:5672
198
+ at createConnectionError (node:net:1675:14)
199
+ at afterConnectMultiple (node:net:1705:16) {
200
+ errno: -4078,
201
+ code: 'ECONNREFUSED',
202
+ syscall: 'connect',
203
+ address: '127.0.0.1',
204
+ port: 5672
205
+ }
206
+ ]
207
+ }
208
+ Attempting to reconnect (8/10)...
209
+ Failed to connect to RabbitMQ: AggregateError
210
+ at internalConnectMultiple (node:net:1139:18)
211
+ at afterConnectMultiple (node:net:1712:7) {
212
+ code: 'ECONNREFUSED',
213
+ [errors]: [
214
+ Error: connect ECONNREFUSED ::1:5672
215
+ at createConnectionError (node:net:1675:14)
216
+ at afterConnectMultiple (node:net:1705:16) {
217
+ errno: -4078,
218
+ code: 'ECONNREFUSED',
219
+ syscall: 'connect',
220
+ address: '::1',
221
+ port: 5672
222
+ },
223
+ Error: connect ECONNREFUSED 127.0.0.1:5672
224
+ at createConnectionError (node:net:1675:14)
225
+ at afterConnectMultiple (node:net:1705:16) {
226
+ errno: -4078,
227
+ code: 'ECONNREFUSED',
228
+ syscall: 'connect',
229
+ address: '127.0.0.1',
230
+ port: 5672
231
+ }
232
+ ]
233
+ }
234
+ Attempting to reconnect (9/10)...
235
+ Failed to connect to RabbitMQ: AggregateError
236
+ at internalConnectMultiple (node:net:1139:18)
237
+ at afterConnectMultiple (node:net:1712:7) {
238
+ code: 'ECONNREFUSED',
239
+ [errors]: [
240
+ Error: connect ECONNREFUSED ::1:5672
241
+ at createConnectionError (node:net:1675:14)
242
+ at afterConnectMultiple (node:net:1705:16) {
243
+ errno: -4078,
244
+ code: 'ECONNREFUSED',
245
+ syscall: 'connect',
246
+ address: '::1',
247
+ port: 5672
248
+ },
249
+ Error: connect ECONNREFUSED 127.0.0.1:5672
250
+ at createConnectionError (node:net:1675:14)
251
+ at afterConnectMultiple (node:net:1705:16) {
252
+ errno: -4078,
253
+ code: 'ECONNREFUSED',
254
+ syscall: 'connect',
255
+ address: '127.0.0.1',
256
+ port: 5672
257
+ }
258
+ ]
259
+ }
260
+ Attempting to reconnect (10/10)...
261
+ Failed to connect to RabbitMQ: AggregateError
262
+ at internalConnectMultiple (node:net:1139:18)
263
+ at afterConnectMultiple (node:net:1712:7) {
264
+ code: 'ECONNREFUSED',
265
+ [errors]: [
266
+ Error: connect ECONNREFUSED ::1:5672
267
+ at createConnectionError (node:net:1675:14)
268
+ at afterConnectMultiple (node:net:1705:16) {
269
+ errno: -4078,
270
+ code: 'ECONNREFUSED',
271
+ syscall: 'connect',
272
+ address: '::1',
273
+ port: 5672
274
+ },
275
+ Error: connect ECONNREFUSED 127.0.0.1:5672
276
+ at createConnectionError (node:net:1675:14)
277
+ at afterConnectMultiple (node:net:1705:16) {
278
+ errno: -4078,
279
+ code: 'ECONNREFUSED',
280
+ syscall: 'connect',
281
+ address: '127.0.0.1',
282
+ port: 5672
283
+ }
284
+ ]
285
+ }
286
+ Max reconnection attempts reached
287
+ ❌ Multi-node test failed: Error: Not connected to RabbitMQ
288
+ at RabbitMQConnection.getChannel (D:\code\nodejs-task-scheduler\src\utils\rabbitmq.ts:63:13)
289
+ at QueueManager.createQueue (D:\code\nodejs-task-scheduler\src\queue\index.ts:22:37)
290
+ at QueueManager.setupDeadLetterQueue (D:\code\nodejs-task-scheduler\src\queue\index.ts:107:16)
291
+ at TaskScheduler.initialize (D:\code\nodejs-task-scheduler\src\index.ts:44:29)
292
+ at processTicksAndRejections (node:internal/process/task_queues:105:5)
293
+ at async MultiNodeTester.startAllNodes (D:\code\nodejs-task-scheduler\test-multinode.ts:61:7)
294
+ at async MultiNodeTester.runTest (D:\code\nodejs-task-scheduler\test-multinode.ts:24:7)
295
+ 🧹 Cleaning up test resources...
296
+ ✅ Cleanup completed
package/CHANGELOG.md CHANGED
File without changes
package/MULTINODE-TEST.md CHANGED
File without changes
package/README.md CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/index.d.ts CHANGED
File without changes
File without changes
package/dist/index.js CHANGED
File without changes
package/dist/index.js.map CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -32,6 +32,7 @@ export declare class MasterElection extends EventEmitter {
32
32
  private lastHeartbeat?;
33
33
  private isRunning;
34
34
  private consumerTag?;
35
+ private electionChannel;
35
36
  constructor(config: MasterElectionConfig);
36
37
  start(): Promise<void>;
37
38
  stop(): Promise<void>;
@@ -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,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;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAS;gBAEjB,MAAM,EAAE,oBAAoB;IAYlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAetB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B3B,QAAQ,IAAI,OAAO;IAInB,SAAS,IAAI,MAAM;IAInB,QAAQ,IAAI,eAAe;YAIb,gBAAgB;YAmChB,aAAa;YAYb,iBAAiB;YAgCjB,YAAY;YAoBZ,cAAc;YAuBd,aAAa;YA2Cb,sBAAsB;IAkFpC,OAAO,CAAC,sBAAsB;YAahB,gBAAgB;IA0B9B,OAAO,CAAC,oBAAoB;YAwBd,qBAAqB;YAoBrB,iBAAiB;IAe/B,OAAO,CAAC,YAAY;CAGrB"}
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;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAa;gBAExB,MAAM,EAAE,oBAAoB;IAYlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAetB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsC3B,QAAQ,IAAI,OAAO;IAInB,SAAS,IAAI,MAAM;IAInB,QAAQ,IAAI,eAAe;YAIb,gBAAgB;YAqDhB,aAAa;YAYb,iBAAiB;YAqCjB,YAAY;YAoBZ,cAAc;YAuBd,aAAa;YA4Cb,sBAAsB;IAmFpC,OAAO,CAAC,sBAAsB;YAahB,gBAAgB;IA0B9B,OAAO,CAAC,oBAAoB;YAwBd,qBAAqB;YAoBrB,iBAAiB;IAe/B,OAAO,CAAC,YAAY;CAGrB"}
@@ -14,6 +14,7 @@ class MasterElection extends events_1.EventEmitter {
14
14
  super();
15
15
  this.state = LeadershipState.FOLLOWER;
16
16
  this.isRunning = false;
17
+ this.electionChannel = null;
17
18
  this.connection = config.connection;
18
19
  this.nodeId = config.nodeId || (0, uuid_1.v4)();
19
20
  this.heartbeatInterval = config.heartbeatInterval || 10000; // 10 seconds
@@ -47,6 +48,15 @@ class MasterElection extends events_1.EventEmitter {
47
48
  if (this.cleanupTimer) {
48
49
  clearInterval(this.cleanupTimer);
49
50
  }
51
+ if (this.electionChannel) {
52
+ try {
53
+ await this.electionChannel.close();
54
+ }
55
+ catch (error) {
56
+ // Ignore channel close errors
57
+ }
58
+ this.electionChannel = null;
59
+ }
50
60
  if (this.state === LeadershipState.LEADER) {
51
61
  await this.resignLeadership();
52
62
  }
@@ -67,7 +77,24 @@ class MasterElection extends events_1.EventEmitter {
67
77
  if (!this.connection.isConnected()) {
68
78
  throw new Error('Not connected to RabbitMQ');
69
79
  }
70
- const channel = this.connection.getChannel();
80
+ // Create dedicated channel for election to isolate errors
81
+ if (!this.electionChannel) {
82
+ this.electionChannel = await this.connection.createChannel();
83
+ // Handle channel closure (e.g. if another node gets exclusive lock)
84
+ this.electionChannel.on('error', (err) => {
85
+ // If it's an access refused error, it's expected when someone else is leader
86
+ if (err.message && (err.message.includes('exclusive') || err.code === 403)) {
87
+ // Channel will be closed, we need to clear our reference
88
+ this.electionChannel = null;
89
+ this.becomeFollower().catch(() => { });
90
+ }
91
+ else {
92
+ console.error(`Election channel error for node ${this.nodeId}:`, err);
93
+ this.electionChannel = null;
94
+ }
95
+ });
96
+ }
97
+ const channel = this.electionChannel;
71
98
  // Election queue - exclusive, auto-delete when connection closes
72
99
  await channel.assertQueue(this.electionQueue, {
73
100
  exclusive: false,
@@ -107,7 +134,11 @@ class MasterElection extends events_1.EventEmitter {
107
134
  if (!this.connection.isConnected()) {
108
135
  throw new Error('Not connected to RabbitMQ');
109
136
  }
110
- const channel = this.connection.getChannel();
137
+ // Ensure we have a channel
138
+ if (!this.electionChannel) {
139
+ await this.initializeQueues();
140
+ }
141
+ const channel = this.electionChannel;
111
142
  try {
112
143
  // Try to consume from election queue exclusively
113
144
  const consumerResult = await channel.consume(this.electionQueue, () => { }, // We don't process messages, just need exclusive access
@@ -174,7 +205,8 @@ class MasterElection extends events_1.EventEmitter {
174
205
  if (!this.connection.isConnected()) {
175
206
  throw new Error('Not connected to RabbitMQ');
176
207
  }
177
- const channel = this.connection.getChannel();
208
+ // Heartbeats can use the main channel or election channel
209
+ const channel = this.electionChannel || this.connection.getChannel();
178
210
  const heartbeatMessage = {
179
211
  nodeId: this.nodeId,
180
212
  timestamp: new Date(),
@@ -206,6 +238,7 @@ class MasterElection extends events_1.EventEmitter {
206
238
  if (!this.connection.isConnected()) {
207
239
  throw new Error('Not connected to RabbitMQ');
208
240
  }
241
+ // We should use the main channel for monitoring as election channel might be closed if we failed election
209
242
  const channel = this.connection.getChannel();
210
243
  try {
211
244
  await channel.consume(this.heartbeatQueue, async (msg) => {
@@ -1 +1 @@
1
- {"version":3,"file":"master-election.js","sourceRoot":"","sources":["../../src/utils/master-election.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"master-election.js","sourceRoot":"","sources":["../../src/utils/master-election.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export declare class RabbitMQConnection {
9
9
  constructor(config: ConnectionConfig);
10
10
  connect(): Promise<void>;
11
11
  disconnect(): Promise<void>;
12
+ createChannel(): Promise<any>;
12
13
  getChannel(): any;
13
14
  isConnected(): boolean;
14
15
  private handleConnectionError;
@@ -1 +1 @@
1
- {"version":3,"file":"rabbitmq.d.ts","sourceRoot":"","sources":["../../src/utils/rabbitmq.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAM;IAClC,OAAO,CAAC,cAAc,CAAQ;gBAElB,MAAM,EAAE,gBAAgB;IAI9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC,UAAU,IAAI,GAAG;IAOjB,WAAW,IAAI,OAAO;YAIR,qBAAqB;YAiBrB,qBAAqB;YAUrB,eAAe;CAgB9B"}
1
+ {"version":3,"file":"rabbitmq.d.ts","sourceRoot":"","sources":["../../src/utils/rabbitmq.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAM;IAClC,OAAO,CAAC,cAAc,CAAQ;gBAElB,MAAM,EAAE,gBAAgB;IAI9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB3B,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAOnC,UAAU,IAAI,GAAG;IAOjB,WAAW,IAAI,OAAO;YAIR,qBAAqB;YAiBrB,qBAAqB;YAUrB,eAAe;CAgB9B"}
@@ -80,6 +80,12 @@ class RabbitMQConnection {
80
80
  this.connection = null;
81
81
  }
82
82
  }
83
+ async createChannel() {
84
+ if (!this.connection) {
85
+ throw new Error('Not connected to RabbitMQ');
86
+ }
87
+ return await this.connection.createChannel();
88
+ }
83
89
  getChannel() {
84
90
  if (!this.channel) {
85
91
  throw new Error('Not connected to RabbitMQ');
@@ -1 +1 @@
1
- {"version":3,"file":"rabbitmq.js","sourceRoot":"","sources":["../../src/utils/rabbitmq.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rabbitmq.js","sourceRoot":"","sources":["../../src/utils/rabbitmq.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
package/nul ADDED
@@ -0,0 +1 @@
1
+ error during connect: Post "http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine/v1.51/containers/rabbitmq-test/stop": open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified.
package/package.json CHANGED
@@ -1,63 +1,63 @@
1
- {
2
- "name": "nodejs-task-scheduler",
3
- "version": "1.0.10",
4
- "description": "Distributed task scheduler using RabbitMQ with cron and direct job execution",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "build": "tsc",
9
- "start": "node dist/index.js",
10
- "dev": "ts-node src/index.ts",
11
- "test": "jest",
12
- "lint": "eslint src/**/*.ts --fix",
13
- "typecheck": "tsc --noEmit",
14
- "clean": "rm -rf dist",
15
- "prepack": "npm run clean && npm run build",
16
- "prepublishOnly": "npm run test && npm run lint && npm run typecheck",
17
- "docker:build": "docker build -t nodejs-task-scheduler .",
18
- "docker:run": "docker-compose up -d",
19
- "docker:stop": "docker-compose down",
20
- "docker:logs": "docker-compose logs -f"
21
- },
22
- "keywords": [
23
- "task",
24
- "scheduler",
25
- "rabbitmq",
26
- "cron",
27
- "distributed",
28
- "queue"
29
- ],
30
- "author": "Ruben de Roos",
31
- "homepage": "https://github.com/thedutchruben/nodejs-task-scheduler#readme",
32
- "repository": {
33
- "type": "git",
34
- "url": "git+https://github.com/thedutchruben/nodejs-task-scheduler.git"
35
- },
36
- "bugs": {
37
- "url": "https://github.com/thedutchruben/nodejs-task-scheduler/issues"
38
- },
39
- "license": "MIT",
40
- "engines": {
41
- "node": ">=16.0.0"
42
- },
43
- "dependencies": {
44
- "amqplib": "^0.10.3",
45
- "node-cron": "^3.0.3",
46
- "reflect-metadata": "^0.1.13",
47
- "uuid": "^9.0.1"
48
- },
49
- "devDependencies": {
50
- "@types/amqplib": "^0.10.7",
51
- "@types/jest": "^29.5.8",
52
- "@types/node": "^20.10.0",
53
- "@types/node-cron": "^3.0.11",
54
- "@types/uuid": "^9.0.7",
55
- "@typescript-eslint/eslint-plugin": "^6.13.0",
56
- "@typescript-eslint/parser": "^6.13.0",
57
- "eslint": "^8.55.0",
58
- "jest": "^29.7.0",
59
- "ts-jest": "^29.1.1",
60
- "ts-node": "^10.9.1",
61
- "typescript": "^5.3.2"
62
- }
63
- }
1
+ {
2
+ "name": "nodejs-task-scheduler",
3
+ "version": "1.0.12",
4
+ "description": "Distributed task scheduler using RabbitMQ with cron and direct job execution",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "start": "node dist/index.js",
10
+ "dev": "ts-node src/index.ts",
11
+ "test": "jest",
12
+ "lint": "eslint src/**/*.ts --fix",
13
+ "typecheck": "tsc --noEmit",
14
+ "clean": "rm -rf dist",
15
+ "prepack": "npm run build",
16
+ "prepublishOnly": "npm run test && npm run lint && npm run typecheck",
17
+ "docker:build": "docker build -t nodejs-task-scheduler .",
18
+ "docker:run": "docker-compose up -d",
19
+ "docker:stop": "docker-compose down",
20
+ "docker:logs": "docker-compose logs -f"
21
+ },
22
+ "keywords": [
23
+ "task",
24
+ "scheduler",
25
+ "rabbitmq",
26
+ "cron",
27
+ "distributed",
28
+ "queue"
29
+ ],
30
+ "author": "Ruben de Roos",
31
+ "homepage": "https://github.com/thedutchruben/nodejs-task-scheduler#readme",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "git+https://github.com/thedutchruben/nodejs-task-scheduler.git"
35
+ },
36
+ "bugs": {
37
+ "url": "https://github.com/thedutchruben/nodejs-task-scheduler/issues"
38
+ },
39
+ "license": "MIT",
40
+ "engines": {
41
+ "node": ">=16.0.0"
42
+ },
43
+ "dependencies": {
44
+ "amqplib": "^0.10.3",
45
+ "node-cron": "^3.0.3",
46
+ "reflect-metadata": "^0.1.13",
47
+ "uuid": "^9.0.1"
48
+ },
49
+ "devDependencies": {
50
+ "@types/amqplib": "^0.10.7",
51
+ "@types/jest": "^29.5.8",
52
+ "@types/node": "^20.10.0",
53
+ "@types/node-cron": "^3.0.11",
54
+ "@types/uuid": "^9.0.7",
55
+ "@typescript-eslint/eslint-plugin": "^6.13.0",
56
+ "@typescript-eslint/parser": "^6.13.0",
57
+ "eslint": "^8.55.0",
58
+ "jest": "^29.7.0",
59
+ "ts-jest": "^29.1.1",
60
+ "ts-node": "^10.9.1",
61
+ "typescript": "^5.3.2"
62
+ }
63
+ }
File without changes
package/test-multinode.ts CHANGED
@@ -60,41 +60,54 @@ class MultiNodeTester {
60
60
 
61
61
  await scheduler.initialize();
62
62
 
63
- // Wait a bit for full initialization
64
- await this.sleep(2000);
63
+ // Wait a bit for full initialization and election stabilization
64
+ await this.sleep(3000);
65
65
 
66
66
  this.nodes.set(config.nodeId, scheduler);
67
67
 
68
- // Create a worker on each node
69
- await scheduler.createWorker({
70
- name: `${config.nodeId}-worker`,
71
- concurrency: 2,
72
- queues: ['test-jobs'],
73
- handlers: {
74
- 'test-job': async (data: any) => {
75
- console.log(`📋 ${config.nodeId} processing job:`, data.jobId);
76
- await this.sleep(1000); // Simulate work
77
- return {
78
- success: true,
79
- processedBy: config.nodeId,
80
- timestamp: new Date()
81
- };
82
- },
83
- 'priority-job': async (data: any) => {
84
- console.log(`⭐ ${config.nodeId} processing priority job:`, data.jobId);
85
- return {
86
- success: true,
87
- processedBy: config.nodeId,
88
- priority: true
89
- };
90
- }
68
+ // Retry creating worker in case of transient connection issues during startup
69
+ let retryCount = 0;
70
+ const maxRetries = 3;
71
+ while (retryCount < maxRetries) {
72
+ try {
73
+ // Create a worker on each node
74
+ await scheduler.createWorker({
75
+ name: `${config.nodeId}-worker`,
76
+ concurrency: 2,
77
+ queues: ['test-jobs'],
78
+ handlers: {
79
+ 'test-job': async (data: any) => {
80
+ console.log(`📋 ${config.nodeId} processing job:`, data.jobId);
81
+ await this.sleep(1000); // Simulate work
82
+ return {
83
+ success: true,
84
+ processedBy: config.nodeId,
85
+ timestamp: new Date()
86
+ };
87
+ },
88
+ 'priority-job': async (data: any) => {
89
+ console.log(`⭐ ${config.nodeId} processing priority job:`, data.jobId);
90
+ return {
91
+ success: true,
92
+ processedBy: config.nodeId,
93
+ priority: true
94
+ };
95
+ }
96
+ }
97
+ });
98
+ break; // Success
99
+ } catch (error) {
100
+ retryCount++;
101
+ console.warn(`⚠️ Failed to create worker for ${config.nodeId} (attempt ${retryCount}/${maxRetries}):`, error.message);
102
+ if (retryCount >= maxRetries) throw error;
103
+ await this.sleep(5000); // Wait for potential reconnection
91
104
  }
92
- });
105
+ }
93
106
 
94
107
  console.log(`✅ ${config.nodeId} started and ready`);
95
108
 
96
109
  // Stagger node startup to avoid race conditions
97
- await this.sleep(1000);
110
+ await this.sleep(2000);
98
111
  }
99
112
  }
100
113
 
@@ -106,10 +119,10 @@ class MultiNodeTester {
106
119
 
107
120
  for (const [nodeId, scheduler] of this.nodes) {
108
121
  const nodeInfo = await scheduler.getNodeInfo();
109
- // @ts-ignore
110
- const isLeader = nodeInfo.isLeader;
122
+ const isLeader = scheduler.isLeader();
123
+ const schedulerNodeId = scheduler.getSchedulerNodeId();
111
124
 
112
- console.log(`${nodeId}: ${isLeader ? '👑 LEADER' : '👥 FOLLOWER'} (Node ID: ${nodeInfo.nodeId})`);
125
+ console.log(`${nodeId}: ${isLeader ? '👑 LEADER' : '👥 FOLLOWER'} (Node ID: ${schedulerNodeId})`);
113
126
 
114
127
  if (isLeader) {
115
128
  leaderCount++;
@@ -154,9 +167,7 @@ class MultiNodeTester {
154
167
  // Find current leader
155
168
  let currentLeader = '';
156
169
  for (const [nodeId, scheduler] of this.nodes) {
157
- const nodeInfo = await scheduler.getNodeInfo();
158
- // @ts-ignore
159
- if (nodeInfo.isLeader) {
170
+ if (scheduler.isLeader()) {
160
171
  currentLeader = nodeId;
161
172
  break;
162
173
  }
@@ -175,7 +186,7 @@ class MultiNodeTester {
175
186
 
176
187
  // Wait for new election
177
188
  console.log('⏳ Waiting for new leader election...');
178
- await this.sleep(8000);
189
+ await this.sleep(15000); // Increased from 8000 to 15000
179
190
 
180
191
  // Check new leader
181
192
  await this.checkLeaderStatus();
File without changes
File without changes
File without changes
@@ -1,2 +0,0 @@
1
- import 'reflect-metadata';
2
- //# sourceMappingURL=setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC"}
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // Test setup file
4
- require("reflect-metadata");
5
- // Suppress console logs during tests unless debugging
6
- if (!process.env.DEBUG_TESTS) {
7
- global.console = {
8
- ...console,
9
- log: jest.fn(),
10
- warn: jest.fn(),
11
- error: jest.fn(),
12
- };
13
- }
14
- // Global test timeout
15
- jest.setTimeout(10000);
16
- // Handle unhandled promise rejections in tests
17
- process.on('unhandledRejection', (reason, promise) => {
18
- // Ignore unhandled rejections during tests
19
- });
20
- // Clean up any lingering timers after each test
21
- afterEach(() => {
22
- jest.clearAllTimers();
23
- });
24
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":";;AAAA,kBAAkB;AAClB,4BAA0B;AAE1B,sDAAsD;AACtD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IAC7B,MAAM,CAAC,OAAO,GAAG;QACf,GAAG,OAAO;QACV,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;QACd,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC;AAED,sBAAsB;AACtB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAEvB,+CAA+C;AAC/C,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnD,2CAA2C;AAC7C,CAAC,CAAC,CAAC;AAEH,gDAAgD;AAChD,SAAS,CAAC,GAAG,EAAE;IACb,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC"}