bunqueue 2.3.1 → 2.4.1
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.
- package/dist/application/queueManager.d.ts.map +1 -1
- package/dist/application/queueManager.js +1 -37
- package/dist/application/queueManager.js.map +1 -1
- package/dist/application/statsManager.d.ts +10 -0
- package/dist/application/statsManager.d.ts.map +1 -1
- package/dist/application/statsManager.js +42 -0
- package/dist/application/statsManager.js.map +1 -1
- package/dist/client/jobConversion.d.ts +3 -76
- package/dist/client/jobConversion.d.ts.map +1 -1
- package/dist/client/jobConversion.js +2 -100
- package/dist/client/jobConversion.js.map +1 -1
- package/dist/client/jobConversionHelpers.d.ts +13 -0
- package/dist/client/jobConversionHelpers.d.ts.map +1 -0
- package/dist/client/jobConversionHelpers.js +105 -0
- package/dist/client/jobConversionHelpers.js.map +1 -0
- package/dist/client/jobConversionTypes.d.ts +81 -0
- package/dist/client/jobConversionTypes.d.ts.map +1 -0
- package/dist/client/jobConversionTypes.js +6 -0
- package/dist/client/jobConversionTypes.js.map +1 -0
- package/dist/client/queue/addBatcher.d.ts +60 -0
- package/dist/client/queue/addBatcher.d.ts.map +1 -0
- package/dist/client/queue/addBatcher.js +137 -0
- package/dist/client/queue/addBatcher.js.map +1 -0
- package/dist/client/queue/queue.d.ts +1 -0
- package/dist/client/queue/queue.d.ts.map +1 -1
- package/dist/client/queue/queue.js +25 -2
- package/dist/client/queue/queue.js.map +1 -1
- package/dist/client/types.d.ts +16 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/types.js.map +1 -1
- package/dist/client/worker/worker.d.ts +4 -95
- package/dist/client/worker/worker.d.ts.map +1 -1
- package/dist/client/worker/worker.js +50 -282
- package/dist/client/worker/worker.js.map +1 -1
- package/dist/client/worker/workerHeartbeat.d.ts +16 -0
- package/dist/client/worker/workerHeartbeat.d.ts.map +1 -0
- package/dist/client/worker/workerHeartbeat.js +44 -0
- package/dist/client/worker/workerHeartbeat.js.map +1 -0
- package/dist/client/worker/workerPull.d.ts +21 -0
- package/dist/client/worker/workerPull.d.ts.map +1 -0
- package/dist/client/worker/workerPull.js +60 -0
- package/dist/client/worker/workerPull.js.map +1 -0
- package/dist/client/worker/workerRateLimiter.d.ts +37 -0
- package/dist/client/worker/workerRateLimiter.d.ts.map +1 -0
- package/dist/client/worker/workerRateLimiter.js +84 -0
- package/dist/client/worker/workerRateLimiter.js.map +1 -0
- package/dist/domain/queue/shard.d.ts +8 -23
- package/dist/domain/queue/shard.d.ts.map +1 -1
- package/dist/domain/queue/shard.js +30 -90
- package/dist/domain/queue/shard.js.map +1 -1
- package/dist/domain/queue/shardCounters.d.ts +36 -0
- package/dist/domain/queue/shardCounters.d.ts.map +1 -0
- package/dist/domain/queue/shardCounters.js +68 -0
- package/dist/domain/queue/shardCounters.js.map +1 -0
- package/dist/domain/queue/waiterManager.d.ts +19 -0
- package/dist/domain/queue/waiterManager.d.ts.map +1 -0
- package/dist/domain/queue/waiterManager.js +64 -0
- package/dist/domain/queue/waiterManager.js.map +1 -0
- package/dist/shared/boundedMap.d.ts +31 -0
- package/dist/shared/boundedMap.d.ts.map +1 -0
- package/dist/shared/boundedMap.js +78 -0
- package/dist/shared/boundedMap.js.map +1 -0
- package/dist/shared/boundedSet.d.ts +27 -0
- package/dist/shared/boundedSet.d.ts.map +1 -0
- package/dist/shared/boundedSet.js +64 -0
- package/dist/shared/boundedSet.js.map +1 -0
- package/dist/shared/lru.d.ts +5 -197
- package/dist/shared/lru.d.ts.map +1 -1
- package/dist/shared/lru.js +5 -538
- package/dist/shared/lru.js.map +1 -1
- package/dist/shared/lruMap.d.ts +43 -0
- package/dist/shared/lruMap.d.ts.map +1 -0
- package/dist/shared/lruMap.js +142 -0
- package/dist/shared/lruMap.js.map +1 -0
- package/dist/shared/lruSet.d.ts +37 -0
- package/dist/shared/lruSet.d.ts.map +1 -0
- package/dist/shared/lruSet.js +106 -0
- package/dist/shared/lruSet.js.map +1 -0
- package/dist/shared/ttlMap.d.ts +82 -0
- package/dist/shared/ttlMap.d.ts.map +1 -0
- package/dist/shared/ttlMap.js +169 -0
- package/dist/shared/ttlMap.js.map +1 -0
- package/package.json +1 -1
|
@@ -9,6 +9,9 @@ import { FORCE_EMBEDDED, WORKER_CONSTANTS } from './types';
|
|
|
9
9
|
import { AckBatcher } from './ackBatcher';
|
|
10
10
|
import { parseJobFromResponse } from './jobParser';
|
|
11
11
|
import { processJob } from './processor';
|
|
12
|
+
import { WorkerRateLimiter } from './workerRateLimiter';
|
|
13
|
+
import { startHeartbeat } from './workerHeartbeat';
|
|
14
|
+
import { pullEmbedded, pullTcp } from './workerPull';
|
|
12
15
|
/**
|
|
13
16
|
* Worker class for processing jobs
|
|
14
17
|
*/
|
|
@@ -20,6 +23,7 @@ export class Worker extends EventEmitter {
|
|
|
20
23
|
tcp;
|
|
21
24
|
tcpPool;
|
|
22
25
|
ackBatcher;
|
|
26
|
+
rateLimiter;
|
|
23
27
|
running = false;
|
|
24
28
|
paused = false;
|
|
25
29
|
closing = false;
|
|
@@ -40,9 +44,6 @@ export class Worker extends EventEmitter {
|
|
|
40
44
|
pendingJobs = [];
|
|
41
45
|
pendingJobsHead = 0;
|
|
42
46
|
processingScheduled = false; // Prevent multiple setImmediate calls
|
|
43
|
-
// Rate limiter state (BullMQ v5 compatible)
|
|
44
|
-
limiter;
|
|
45
|
-
limiterTokens = []; // Timestamps of recent job completions
|
|
46
47
|
// Drained event tracking
|
|
47
48
|
lastDrainedEmit = 0;
|
|
48
49
|
// Stalled event subscription (BullMQ v5 compatible)
|
|
@@ -62,11 +63,10 @@ export class Worker extends EventEmitter {
|
|
|
62
63
|
batchSize: Math.min(opts.batchSize ?? 10, 1000),
|
|
63
64
|
pollTimeout: Math.min(opts.pollTimeout ?? 0, WORKER_CONSTANTS.MAX_POLL_TIMEOUT),
|
|
64
65
|
embedded: this.embedded,
|
|
65
|
-
// Lock-based ownership: disable for high-throughput scenarios where stall detection is sufficient
|
|
66
66
|
useLocks: opts.useLocks ?? true,
|
|
67
67
|
};
|
|
68
|
-
// Initialize rate limiter
|
|
69
|
-
this.
|
|
68
|
+
// Initialize rate limiter
|
|
69
|
+
this.rateLimiter = new WorkerRateLimiter(opts.limiter ?? null);
|
|
70
70
|
this.ackBatcher = new AckBatcher({
|
|
71
71
|
batchSize: opts.batchSize ?? 10,
|
|
72
72
|
interval: WORKER_CONSTANTS.DEFAULT_ACK_INTERVAL,
|
|
@@ -108,7 +108,8 @@ export class Worker extends EventEmitter {
|
|
|
108
108
|
this.subscribeToStalledEvents();
|
|
109
109
|
}
|
|
110
110
|
if (!this.embedded && this.opts.heartbeatInterval > 0) {
|
|
111
|
-
this.
|
|
111
|
+
const deps = this.getHeartbeatDeps();
|
|
112
|
+
this.heartbeatTimer = startHeartbeat(deps, this.opts.heartbeatInterval);
|
|
112
113
|
}
|
|
113
114
|
this.poll();
|
|
114
115
|
}
|
|
@@ -121,7 +122,6 @@ export class Worker extends EventEmitter {
|
|
|
121
122
|
if (event.queue !== this.name)
|
|
122
123
|
return;
|
|
123
124
|
if (event.eventType === "stalled" /* EventType.Stalled */) {
|
|
124
|
-
// Emit stalled event (BullMQ v5 format: jobId, prev)
|
|
125
125
|
this.emit('stalled', event.jobId, 'active');
|
|
126
126
|
}
|
|
127
127
|
});
|
|
@@ -144,38 +144,22 @@ export class Worker extends EventEmitter {
|
|
|
144
144
|
this.paused = false;
|
|
145
145
|
this.run();
|
|
146
146
|
}
|
|
147
|
-
/** Check if worker is currently running */
|
|
148
147
|
isRunning() {
|
|
149
148
|
return this.running;
|
|
150
149
|
}
|
|
151
|
-
/** Check if worker is paused */
|
|
152
150
|
isPaused() {
|
|
153
151
|
return this.paused && !this.closed;
|
|
154
152
|
}
|
|
155
|
-
/** Check if worker is closed */
|
|
156
153
|
isClosed() {
|
|
157
154
|
return this.closed;
|
|
158
155
|
}
|
|
159
|
-
/**
|
|
160
|
-
* Wait until the worker is ready (BullMQ v5 compatible).
|
|
161
|
-
* In embedded mode, resolves immediately.
|
|
162
|
-
* In TCP mode, waits for connection to be established.
|
|
163
|
-
*/
|
|
164
156
|
async waitUntilReady() {
|
|
165
|
-
if (this.embedded)
|
|
166
|
-
// Embedded mode is always ready
|
|
157
|
+
if (this.embedded)
|
|
167
158
|
return;
|
|
168
|
-
}
|
|
169
159
|
if (this.tcpPool) {
|
|
170
|
-
// Wait for TCP connection by sending a ping
|
|
171
160
|
await this.tcpPool.send({ cmd: 'Ping' });
|
|
172
161
|
}
|
|
173
162
|
}
|
|
174
|
-
/**
|
|
175
|
-
* Mark a job for cancellation (BullMQ v5 compatible).
|
|
176
|
-
* The job will be failed with the given reason when it completes processing.
|
|
177
|
-
* Returns true if the job was found and marked for cancellation.
|
|
178
|
-
*/
|
|
179
163
|
cancelJob(jobId, reason) {
|
|
180
164
|
if (this.activeJobIds.has(jobId)) {
|
|
181
165
|
this.cancelledJobs.add(jobId);
|
|
@@ -184,123 +168,29 @@ export class Worker extends EventEmitter {
|
|
|
184
168
|
}
|
|
185
169
|
return false;
|
|
186
170
|
}
|
|
187
|
-
/**
|
|
188
|
-
* Mark all active jobs for cancellation (BullMQ v5 compatible).
|
|
189
|
-
*/
|
|
190
171
|
cancelAllJobs(reason) {
|
|
191
172
|
for (const jobId of this.activeJobIds) {
|
|
192
173
|
this.cancelledJobs.add(jobId);
|
|
193
174
|
this.emit('cancelled', { jobId, reason: reason ?? 'All jobs cancelled' });
|
|
194
175
|
}
|
|
195
176
|
}
|
|
196
|
-
/**
|
|
197
|
-
* Check if a job has been marked for cancellation.
|
|
198
|
-
* Can be called from within a processor to check if the job should stop.
|
|
199
|
-
*/
|
|
200
177
|
isJobCancelled(jobId) {
|
|
201
178
|
return this.cancelledJobs.has(jobId);
|
|
202
179
|
}
|
|
203
|
-
|
|
204
|
-
* Check if rate limiter allows processing another job.
|
|
205
|
-
* Returns true if we can process, false if rate limited.
|
|
206
|
-
*/
|
|
207
|
-
canProcessWithinLimit() {
|
|
208
|
-
if (!this.limiter)
|
|
209
|
-
return true;
|
|
210
|
-
const now = Date.now();
|
|
211
|
-
const windowStart = now - this.limiter.duration;
|
|
212
|
-
// Remove expired tokens
|
|
213
|
-
this.limiterTokens = this.limiterTokens.filter((t) => t > windowStart);
|
|
214
|
-
// Check if we have capacity
|
|
215
|
-
return this.limiterTokens.length < this.limiter.max;
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Record a job completion for rate limiting.
|
|
219
|
-
*/
|
|
220
|
-
recordJobForLimiter() {
|
|
221
|
-
if (!this.limiter)
|
|
222
|
-
return;
|
|
223
|
-
this.limiterTokens.push(Date.now());
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Get time until rate limiter allows next job (ms).
|
|
227
|
-
* Returns 0 if not rate limited.
|
|
228
|
-
*/
|
|
229
|
-
getTimeUntilNextSlot() {
|
|
230
|
-
if (!this.limiter)
|
|
231
|
-
return 0;
|
|
232
|
-
const now = Date.now();
|
|
233
|
-
const windowStart = now - this.limiter.duration;
|
|
234
|
-
// Remove expired tokens
|
|
235
|
-
this.limiterTokens = this.limiterTokens.filter((t) => t > windowStart);
|
|
236
|
-
if (this.limiterTokens.length < this.limiter.max) {
|
|
237
|
-
return 0;
|
|
238
|
-
}
|
|
239
|
-
// Find oldest token and calculate when it expires
|
|
240
|
-
const oldestToken = Math.min(...this.limiterTokens);
|
|
241
|
-
return oldestToken + this.limiter.duration - now;
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Get rate limiter info (for debugging/monitoring).
|
|
245
|
-
*/
|
|
180
|
+
// ============ Rate Limiter (delegated) ============
|
|
246
181
|
getRateLimiterInfo() {
|
|
247
|
-
|
|
248
|
-
return null;
|
|
249
|
-
const now = Date.now();
|
|
250
|
-
const windowStart = now - this.limiter.duration;
|
|
251
|
-
const currentTokens = this.limiterTokens.filter((t) => t > windowStart).length;
|
|
252
|
-
return {
|
|
253
|
-
current: currentTokens,
|
|
254
|
-
max: this.limiter.max,
|
|
255
|
-
duration: this.limiter.duration,
|
|
256
|
-
};
|
|
182
|
+
return this.rateLimiter.getRateLimiterInfo();
|
|
257
183
|
}
|
|
258
|
-
/**
|
|
259
|
-
* Apply rate limiting to this worker (BullMQ v5 compatible).
|
|
260
|
-
* The worker will not process jobs until the rate limit expires.
|
|
261
|
-
*
|
|
262
|
-
* @param expireTimeMs - Time in milliseconds until rate limit expires
|
|
263
|
-
*/
|
|
264
184
|
rateLimit(expireTimeMs) {
|
|
265
|
-
|
|
266
|
-
return;
|
|
267
|
-
// Fill rate limiter tokens to block processing
|
|
268
|
-
if (this.limiter) {
|
|
269
|
-
const now = Date.now();
|
|
270
|
-
// Add enough tokens to block for the specified time
|
|
271
|
-
for (let i = 0; i < this.limiter.max; i++) {
|
|
272
|
-
this.limiterTokens.push(now + expireTimeMs - this.limiter.duration);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
// Store rate limit expiration
|
|
276
|
-
this.rateLimitExpiration = Date.now() + expireTimeMs;
|
|
185
|
+
this.rateLimiter.rateLimit(expireTimeMs);
|
|
277
186
|
}
|
|
278
|
-
/** Rate limit expiration timestamp (internal) */
|
|
279
|
-
rateLimitExpiration = 0;
|
|
280
|
-
/**
|
|
281
|
-
* Check if worker is currently rate limited.
|
|
282
|
-
*/
|
|
283
187
|
isRateLimited() {
|
|
284
|
-
return
|
|
188
|
+
return this.rateLimiter.isRateLimited();
|
|
285
189
|
}
|
|
286
|
-
|
|
287
|
-
* Manually start the stalled job check timer (BullMQ v5 compatible).
|
|
288
|
-
* The check will run once immediately and then every stalledInterval ms.
|
|
289
|
-
* In bunqueue, stall detection is handled automatically by the manager/server.
|
|
290
|
-
*/
|
|
190
|
+
// ============ BullMQ v5 Compatibility ============
|
|
291
191
|
async startStalledCheckTimer() {
|
|
292
|
-
//
|
|
293
|
-
// - Embedded mode: QueueManager.checkStalledJobs() runs periodically
|
|
294
|
-
// - TCP mode: Server-side stall detection
|
|
295
|
-
// This method is a no-op for API compatibility
|
|
192
|
+
// No-op for API compatibility - stall detection is automatic
|
|
296
193
|
}
|
|
297
|
-
/**
|
|
298
|
-
* Delay processing for a specified time (BullMQ v5 compatible).
|
|
299
|
-
* The worker will not pick up new jobs during this delay.
|
|
300
|
-
*
|
|
301
|
-
* @param milliseconds - Time to delay in ms (default: 0)
|
|
302
|
-
* @param abortController - Optional AbortController to cancel the delay
|
|
303
|
-
*/
|
|
304
194
|
async delay(milliseconds = 0, abortController) {
|
|
305
195
|
if (milliseconds <= 0)
|
|
306
196
|
return;
|
|
@@ -314,17 +204,7 @@ export class Worker extends EventEmitter {
|
|
|
314
204
|
}
|
|
315
205
|
});
|
|
316
206
|
}
|
|
317
|
-
//
|
|
318
|
-
// BullMQ v5 Manual Job Control Methods
|
|
319
|
-
// ============================================================================
|
|
320
|
-
/**
|
|
321
|
-
* Get the next job from the queue (BullMQ v5 compatible).
|
|
322
|
-
* This is for manual job processing - typically you'd use the processor callback instead.
|
|
323
|
-
*
|
|
324
|
-
* @param token - Lock token for job ownership
|
|
325
|
-
* @param opts - Options (currently unused, for API compatibility)
|
|
326
|
-
* @returns The next job or undefined if queue is empty
|
|
327
|
-
*/
|
|
207
|
+
// ============ Manual Job Control ============
|
|
328
208
|
async getNextJob(token, _opts) {
|
|
329
209
|
if (this.closed)
|
|
330
210
|
return undefined;
|
|
@@ -369,15 +249,6 @@ export class Worker extends EventEmitter {
|
|
|
369
249
|
}
|
|
370
250
|
return job;
|
|
371
251
|
}
|
|
372
|
-
/**
|
|
373
|
-
* Manually process a job (BullMQ v5 compatible).
|
|
374
|
-
* This is for advanced use cases where you need manual control over job processing.
|
|
375
|
-
*
|
|
376
|
-
* @param job - The job to process
|
|
377
|
-
* @param token - Lock token for job ownership
|
|
378
|
-
* @param fetchNextCallback - Optional callback to fetch next job after completion
|
|
379
|
-
* @returns The processed job or void
|
|
380
|
-
*/
|
|
381
252
|
async processJobManually(job, token, fetchNextCallback) {
|
|
382
253
|
if (this.closed)
|
|
383
254
|
return undefined;
|
|
@@ -398,7 +269,6 @@ export class Worker extends EventEmitter {
|
|
|
398
269
|
emitter: this,
|
|
399
270
|
token: this.opts.useLocks ? token : undefined,
|
|
400
271
|
});
|
|
401
|
-
// Fetch next job if callback provided
|
|
402
272
|
if (fetchNextCallback) {
|
|
403
273
|
return await fetchNextCallback();
|
|
404
274
|
}
|
|
@@ -411,18 +281,9 @@ export class Worker extends EventEmitter {
|
|
|
411
281
|
if (this.opts.useLocks) {
|
|
412
282
|
this.jobTokens.delete(jobIdStr);
|
|
413
283
|
}
|
|
414
|
-
this.recordJobForLimiter();
|
|
284
|
+
this.rateLimiter.recordJobForLimiter();
|
|
415
285
|
}
|
|
416
286
|
}
|
|
417
|
-
/**
|
|
418
|
-
* Extend locks on multiple jobs (BullMQ v5 compatible).
|
|
419
|
-
* Used to prevent jobs from being considered stalled during long processing.
|
|
420
|
-
*
|
|
421
|
-
* @param jobIds - Array of job IDs to extend locks for
|
|
422
|
-
* @param tokens - Array of lock tokens corresponding to each job
|
|
423
|
-
* @param duration - Duration in milliseconds to extend the lock
|
|
424
|
-
* @returns Number of locks successfully extended
|
|
425
|
-
*/
|
|
426
287
|
async extendJobLocks(jobIds, tokens, duration) {
|
|
427
288
|
if (this.closed || jobIds.length === 0)
|
|
428
289
|
return 0;
|
|
@@ -439,7 +300,6 @@ export class Worker extends EventEmitter {
|
|
|
439
300
|
}
|
|
440
301
|
return extended;
|
|
441
302
|
}
|
|
442
|
-
// TCP mode
|
|
443
303
|
if (!this.tcp)
|
|
444
304
|
return 0;
|
|
445
305
|
const response = await this.tcp.send({
|
|
@@ -451,7 +311,7 @@ export class Worker extends EventEmitter {
|
|
|
451
311
|
const extended = response.extended;
|
|
452
312
|
return extended ?? 0;
|
|
453
313
|
}
|
|
454
|
-
|
|
314
|
+
// ============ Lifecycle ============
|
|
455
315
|
async close(force = false) {
|
|
456
316
|
if (this.closed)
|
|
457
317
|
return;
|
|
@@ -467,25 +327,19 @@ export class Worker extends EventEmitter {
|
|
|
467
327
|
this.heartbeatTimer = null;
|
|
468
328
|
}
|
|
469
329
|
if (!force) {
|
|
470
|
-
// Wait for buffered jobs to be processed and all active jobs to finish
|
|
471
330
|
const bufferSize = () => this.pendingJobs.length - this.pendingJobsHead;
|
|
472
331
|
while (this.activeJobs > 0 || bufferSize() > 0) {
|
|
473
332
|
await Bun.sleep(50);
|
|
474
333
|
}
|
|
475
334
|
}
|
|
476
|
-
// Flush any remaining pending acks
|
|
477
335
|
await this.ackBatcher.flush();
|
|
478
|
-
// Wait for ALL in-flight flushes to complete (critical!)
|
|
479
336
|
await this.ackBatcher.waitForInFlight();
|
|
480
337
|
this.ackBatcher.stop();
|
|
481
|
-
// Small delay to ensure TCP responses are processed
|
|
482
338
|
await Bun.sleep(100);
|
|
483
|
-
// Unsubscribe from stalled events
|
|
484
339
|
if (this.stalledUnsubscribe) {
|
|
485
340
|
this.stalledUnsubscribe();
|
|
486
341
|
this.stalledUnsubscribe = null;
|
|
487
342
|
}
|
|
488
|
-
// Clear tracking sets
|
|
489
343
|
this.activeJobIds.clear();
|
|
490
344
|
this.pulledJobIds.clear();
|
|
491
345
|
this.jobTokens.clear();
|
|
@@ -498,45 +352,7 @@ export class Worker extends EventEmitter {
|
|
|
498
352
|
this.closing = false;
|
|
499
353
|
this.emit('closed');
|
|
500
354
|
}
|
|
501
|
-
|
|
502
|
-
this.heartbeatTimer = setInterval(() => void this.sendHeartbeat(), this.opts.heartbeatInterval);
|
|
503
|
-
}
|
|
504
|
-
async sendHeartbeat() {
|
|
505
|
-
// Send heartbeat for ALL pulled jobs (including buffered ones)
|
|
506
|
-
// This is critical: when locks are enabled, we need to renew them
|
|
507
|
-
// even for jobs sitting in the buffer waiting to be processed
|
|
508
|
-
if (this.pulledJobIds.size === 0 || !this.tcp)
|
|
509
|
-
return;
|
|
510
|
-
try {
|
|
511
|
-
// Always take a fresh snapshot - avoids race with job start/complete
|
|
512
|
-
const ids = Array.from(this.pulledJobIds);
|
|
513
|
-
if (ids.length === 0)
|
|
514
|
-
return;
|
|
515
|
-
if (this.opts.useLocks) {
|
|
516
|
-
// With locks: include tokens for lock renewal
|
|
517
|
-
const tokens = ids.map((id) => this.jobTokens.get(id) ?? '');
|
|
518
|
-
if (ids.length === 1) {
|
|
519
|
-
await this.tcp.send({ cmd: 'JobHeartbeat', id: ids[0], token: tokens[0] || undefined });
|
|
520
|
-
}
|
|
521
|
-
else {
|
|
522
|
-
await this.tcp.send({ cmd: 'JobHeartbeatB', ids, tokens });
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
else {
|
|
526
|
-
// Without locks: simple heartbeat for stall detection only
|
|
527
|
-
if (ids.length === 1) {
|
|
528
|
-
await this.tcp.send({ cmd: 'JobHeartbeat', id: ids[0] });
|
|
529
|
-
}
|
|
530
|
-
else {
|
|
531
|
-
await this.tcp.send({ cmd: 'JobHeartbeatB', ids });
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
catch (err) {
|
|
536
|
-
const error = err instanceof Error ? err : new Error(String(err));
|
|
537
|
-
this.emit('error', Object.assign(error, { context: 'heartbeat' }));
|
|
538
|
-
}
|
|
539
|
-
}
|
|
355
|
+
// ============ Processing Pipeline ============
|
|
540
356
|
poll() {
|
|
541
357
|
if (!this.running || this.closing)
|
|
542
358
|
return;
|
|
@@ -547,8 +363,8 @@ export class Worker extends EventEmitter {
|
|
|
547
363
|
return;
|
|
548
364
|
}
|
|
549
365
|
// Check rate limiter
|
|
550
|
-
if (!this.canProcessWithinLimit()) {
|
|
551
|
-
const waitTime = this.getTimeUntilNextSlot();
|
|
366
|
+
if (!this.rateLimiter.canProcessWithinLimit()) {
|
|
367
|
+
const waitTime = this.rateLimiter.getTimeUntilNextSlot();
|
|
552
368
|
this.pollTimer = setTimeout(() => {
|
|
553
369
|
this.poll();
|
|
554
370
|
}, Math.max(waitTime, 10));
|
|
@@ -562,23 +378,19 @@ export class Worker extends EventEmitter {
|
|
|
562
378
|
try {
|
|
563
379
|
let item = this.getBufferedJob();
|
|
564
380
|
if (!item) {
|
|
565
|
-
const items = await this.
|
|
381
|
+
const items = await this.doPullBatch();
|
|
566
382
|
// Re-check state after async operation (can be modified during await)
|
|
567
383
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
568
384
|
if (!this.running || this.closing)
|
|
569
385
|
return;
|
|
570
386
|
if (items.length > 0) {
|
|
571
|
-
// Register ALL pulled jobs for heartbeat tracking immediately
|
|
572
387
|
this.registerPulledJobs(items);
|
|
573
388
|
item = items[0];
|
|
574
|
-
// IMPORTANT: Only set pendingJobs if buffer is empty to avoid race condition
|
|
575
|
-
// where concurrent tryProcess() calls could overwrite each other's buffers
|
|
576
389
|
if (this.pendingJobsHead >= this.pendingJobs.length) {
|
|
577
390
|
this.pendingJobs = items;
|
|
578
391
|
this.pendingJobsHead = 1;
|
|
579
392
|
}
|
|
580
393
|
else {
|
|
581
|
-
// Buffer still has items - append new items instead of replacing
|
|
582
394
|
this.pendingJobs = this.pendingJobs.slice(this.pendingJobsHead).concat(items.slice(1));
|
|
583
395
|
this.pendingJobsHead = 0;
|
|
584
396
|
}
|
|
@@ -589,7 +401,6 @@ export class Worker extends EventEmitter {
|
|
|
589
401
|
this.startJob(item.job, item.token);
|
|
590
402
|
}
|
|
591
403
|
else {
|
|
592
|
-
// Emit drained event when queue is empty (throttled to avoid spam)
|
|
593
404
|
const now = Date.now();
|
|
594
405
|
if (now - this.lastDrainedEmit > 1000) {
|
|
595
406
|
this.lastDrainedEmit = now;
|
|
@@ -602,17 +413,13 @@ export class Worker extends EventEmitter {
|
|
|
602
413
|
}
|
|
603
414
|
}
|
|
604
415
|
catch (err) {
|
|
605
|
-
// Re-check running state - could have changed during async pullBatch()
|
|
606
416
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
607
417
|
if (!this.running)
|
|
608
418
|
return;
|
|
609
419
|
this.handlePullError(err);
|
|
610
420
|
}
|
|
611
421
|
}
|
|
612
|
-
/** Register pulled jobs for heartbeat tracking */
|
|
613
422
|
registerPulledJobs(items) {
|
|
614
|
-
// When locks are enabled: jobs need heartbeats to renew locks
|
|
615
|
-
// Without locks: still track for stall detection heartbeats
|
|
616
423
|
for (const pulledItem of items) {
|
|
617
424
|
const jobIdStr = String(pulledItem.job.id);
|
|
618
425
|
this.pulledJobIds.add(jobIdStr);
|
|
@@ -631,79 +438,24 @@ export class Worker extends EventEmitter {
|
|
|
631
438
|
}
|
|
632
439
|
return item;
|
|
633
440
|
}
|
|
634
|
-
async
|
|
441
|
+
async doPullBatch() {
|
|
635
442
|
const slots = this.opts.concurrency - this.activeJobs;
|
|
636
443
|
const batchSize = Math.min(this.opts.batchSize, slots, 1000);
|
|
637
444
|
if (batchSize <= 0)
|
|
638
445
|
return [];
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
// Use lock-based pull only when useLocks is enabled
|
|
644
|
-
if (this.opts.useLocks) {
|
|
645
|
-
if (count === 1) {
|
|
646
|
-
const { job, token } = await manager.pullWithLock(this.name, this.workerId, 0);
|
|
647
|
-
return job ? [{ job, token }] : [];
|
|
648
|
-
}
|
|
649
|
-
const { jobs, tokens } = await manager.pullBatchWithLock(this.name, count, this.workerId, 0);
|
|
650
|
-
return jobs.map((job, i) => ({ job, token: tokens[i] || null }));
|
|
651
|
-
}
|
|
652
|
-
// No locks - use regular pull
|
|
653
|
-
if (count === 1) {
|
|
654
|
-
const job = await manager.pull(this.name, 0);
|
|
655
|
-
return job ? [{ job, token: null }] : [];
|
|
656
|
-
}
|
|
657
|
-
const jobs = await manager.pullBatch(this.name, count, 0);
|
|
658
|
-
return jobs.map((job) => ({ job, token: null }));
|
|
659
|
-
}
|
|
660
|
-
async pullTcp(count) {
|
|
661
|
-
if (!this.tcp || this.closing)
|
|
662
|
-
return [];
|
|
663
|
-
// Build pull command - only request locks if useLocks is enabled
|
|
664
|
-
const cmd = {
|
|
665
|
-
cmd: count === 1 ? 'PULL' : 'PULLB',
|
|
666
|
-
queue: this.name,
|
|
667
|
-
timeout: this.opts.pollTimeout,
|
|
668
|
-
count,
|
|
669
|
-
};
|
|
670
|
-
// Only request lock ownership when useLocks is enabled
|
|
671
|
-
if (this.opts.useLocks) {
|
|
672
|
-
cmd.owner = this.workerId;
|
|
673
|
-
}
|
|
674
|
-
const response = await this.tcp.send(cmd);
|
|
675
|
-
if (!response.ok)
|
|
676
|
-
return [];
|
|
677
|
-
if (count === 1) {
|
|
678
|
-
const job = response.job;
|
|
679
|
-
// Only expect token if locks are enabled
|
|
680
|
-
const token = this.opts.useLocks
|
|
681
|
-
? (response.token ?? null)
|
|
682
|
-
: null;
|
|
683
|
-
if (job) {
|
|
684
|
-
return [{ job: parseJobFromResponse(job, this.name), token }];
|
|
685
|
-
}
|
|
686
|
-
return [];
|
|
687
|
-
}
|
|
688
|
-
const jobs = response.jobs;
|
|
689
|
-
// Only expect tokens if locks are enabled
|
|
690
|
-
const tokens = this.opts.useLocks ? (response.tokens ?? []) : [];
|
|
691
|
-
return (jobs?.map((j, i) => ({
|
|
692
|
-
job: parseJobFromResponse(j, this.name),
|
|
693
|
-
token: tokens[i] || null,
|
|
694
|
-
})) ?? []);
|
|
446
|
+
const config = this.getPullConfig();
|
|
447
|
+
return this.embedded
|
|
448
|
+
? pullEmbedded(config, batchSize)
|
|
449
|
+
: pullTcp(config, this.tcp, batchSize, this.closing);
|
|
695
450
|
}
|
|
696
451
|
startJob(job, token) {
|
|
697
452
|
this.activeJobs++;
|
|
698
453
|
const jobIdStr = String(job.id);
|
|
699
454
|
this.activeJobIds.add(jobIdStr);
|
|
700
|
-
// Token management only when locks are enabled
|
|
701
455
|
if (this.opts.useLocks && token && !this.jobTokens.has(jobIdStr)) {
|
|
702
456
|
this.jobTokens.set(jobIdStr, token);
|
|
703
457
|
}
|
|
704
|
-
// Ensure job is in pulledJobIds for heartbeat (should already be there from pullBatch)
|
|
705
458
|
this.pulledJobIds.add(jobIdStr);
|
|
706
|
-
// Only pass token if locks are enabled
|
|
707
459
|
const tokenForProcess = this.opts.useLocks ? token : undefined;
|
|
708
460
|
void processJob(job, {
|
|
709
461
|
name: this.name,
|
|
@@ -712,21 +464,19 @@ export class Worker extends EventEmitter {
|
|
|
712
464
|
tcp: this.tcp,
|
|
713
465
|
ackBatcher: this.ackBatcher,
|
|
714
466
|
emitter: this,
|
|
715
|
-
token: tokenForProcess,
|
|
467
|
+
token: tokenForProcess,
|
|
716
468
|
}).finally(() => {
|
|
717
469
|
this.activeJobs--;
|
|
718
470
|
this.activeJobIds.delete(jobIdStr);
|
|
719
|
-
this.pulledJobIds.delete(jobIdStr);
|
|
720
|
-
this.cancelledJobs.delete(jobIdStr);
|
|
471
|
+
this.pulledJobIds.delete(jobIdStr);
|
|
472
|
+
this.cancelledJobs.delete(jobIdStr);
|
|
721
473
|
if (this.opts.useLocks) {
|
|
722
|
-
this.jobTokens.delete(jobIdStr);
|
|
474
|
+
this.jobTokens.delete(jobIdStr);
|
|
723
475
|
}
|
|
724
|
-
|
|
725
|
-
this.recordJobForLimiter();
|
|
476
|
+
this.rateLimiter.recordJobForLimiter();
|
|
726
477
|
if (this.running && !this.closing)
|
|
727
478
|
this.poll();
|
|
728
479
|
});
|
|
729
|
-
// Prevent multiple setImmediate calls (event loop starvation)
|
|
730
480
|
if (this.activeJobs < this.opts.concurrency && !this.closing && !this.processingScheduled) {
|
|
731
481
|
this.processingScheduled = true;
|
|
732
482
|
setImmediate(() => {
|
|
@@ -748,5 +498,23 @@ export class Worker extends EventEmitter {
|
|
|
748
498
|
this.poll();
|
|
749
499
|
}, backoffMs);
|
|
750
500
|
}
|
|
501
|
+
// ============ Private Helpers ============
|
|
502
|
+
getHeartbeatDeps() {
|
|
503
|
+
return {
|
|
504
|
+
pulledJobIds: this.pulledJobIds,
|
|
505
|
+
jobTokens: this.jobTokens,
|
|
506
|
+
tcp: this.tcp,
|
|
507
|
+
useLocks: this.opts.useLocks,
|
|
508
|
+
emitter: this,
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
getPullConfig() {
|
|
512
|
+
return {
|
|
513
|
+
name: this.name,
|
|
514
|
+
workerId: this.workerId,
|
|
515
|
+
useLocks: this.opts.useLocks,
|
|
516
|
+
pollTimeout: this.opts.pollTimeout,
|
|
517
|
+
};
|
|
518
|
+
}
|
|
751
519
|
}
|
|
752
520
|
//# sourceMappingURL=worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/client/worker/worker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/client/worker/worker.ts"],"names":[],"mappings":"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"}
|