bunqueue 1.1.4 → 1.2.0
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/dlqManager.d.ts.map +1 -1
- package/dist/application/dlqManager.js +11 -3
- package/dist/application/dlqManager.js.map +1 -1
- package/dist/application/eventsManager.d.ts +10 -1
- package/dist/application/eventsManager.d.ts.map +1 -1
- package/dist/application/eventsManager.js +91 -21
- package/dist/application/eventsManager.js.map +1 -1
- package/dist/application/operations/ack.d.ts +16 -1
- package/dist/application/operations/ack.d.ts.map +1 -1
- package/dist/application/operations/ack.js +269 -5
- package/dist/application/operations/ack.js.map +1 -1
- package/dist/application/operations/jobManagement.d.ts.map +1 -1
- package/dist/application/operations/jobManagement.js +17 -3
- package/dist/application/operations/jobManagement.js.map +1 -1
- package/dist/application/operations/pull.d.ts +1 -0
- package/dist/application/operations/pull.d.ts.map +1 -1
- package/dist/application/operations/pull.js +106 -8
- package/dist/application/operations/pull.js.map +1 -1
- package/dist/application/operations/push.d.ts.map +1 -1
- package/dist/application/operations/push.js +9 -0
- package/dist/application/operations/push.js.map +1 -1
- package/dist/application/operations/queueControl.d.ts +4 -1
- package/dist/application/operations/queueControl.d.ts.map +1 -1
- package/dist/application/operations/queueControl.js +16 -13
- package/dist/application/operations/queueControl.js.map +1 -1
- package/dist/application/queueManager.d.ts +28 -2
- package/dist/application/queueManager.d.ts.map +1 -1
- package/dist/application/queueManager.js +132 -34
- package/dist/application/queueManager.js.map +1 -1
- package/dist/application/webhookManager.d.ts +7 -1
- package/dist/application/webhookManager.d.ts.map +1 -1
- package/dist/application/webhookManager.js +38 -6
- package/dist/application/webhookManager.js.map +1 -1
- package/dist/application/workerManager.d.ts +5 -1
- package/dist/application/workerManager.d.ts.map +1 -1
- package/dist/application/workerManager.js +35 -10
- package/dist/application/workerManager.js.map +1 -1
- package/dist/bunqueue +0 -0
- package/dist/domain/queue/priorityQueue.d.ts +15 -0
- package/dist/domain/queue/priorityQueue.d.ts.map +1 -1
- package/dist/domain/queue/priorityQueue.js +40 -0
- package/dist/domain/queue/priorityQueue.js.map +1 -1
- package/dist/domain/queue/shard.d.ts +67 -0
- package/dist/domain/queue/shard.d.ts.map +1 -1
- package/dist/domain/queue/shard.js +198 -0
- package/dist/domain/queue/shard.js.map +1 -1
- package/dist/infrastructure/persistence/sqlite.d.ts +3 -1
- package/dist/infrastructure/persistence/sqlite.d.ts.map +1 -1
- package/dist/infrastructure/persistence/sqlite.js +25 -4
- package/dist/infrastructure/persistence/sqlite.js.map +1 -1
- package/dist/infrastructure/scheduler/cronScheduler.d.ts +7 -0
- package/dist/infrastructure/scheduler/cronScheduler.d.ts.map +1 -1
- package/dist/infrastructure/scheduler/cronScheduler.js +49 -18
- package/dist/infrastructure/scheduler/cronScheduler.js.map +1 -1
- package/dist/infrastructure/server/handlers/advanced.d.ts +1 -1
- package/dist/infrastructure/server/handlers/advanced.d.ts.map +1 -1
- package/dist/infrastructure/server/handlers/advanced.js +14 -11
- package/dist/infrastructure/server/handlers/advanced.js.map +1 -1
- package/dist/infrastructure/server/handlers/core.d.ts +2 -2
- package/dist/infrastructure/server/handlers/core.d.ts.map +1 -1
- package/dist/infrastructure/server/handlers/core.js +6 -12
- package/dist/infrastructure/server/handlers/core.js.map +1 -1
- package/dist/infrastructure/server/http.d.ts.map +1 -1
- package/dist/infrastructure/server/http.js +22 -27
- package/dist/infrastructure/server/http.js.map +1 -1
- package/dist/infrastructure/server/rateLimiter.d.ts +4 -3
- package/dist/infrastructure/server/rateLimiter.d.ts.map +1 -1
- package/dist/infrastructure/server/rateLimiter.js +71 -19
- package/dist/infrastructure/server/rateLimiter.js.map +1 -1
- package/dist/main.js +3 -0
- package/dist/main.js.map +1 -1
- package/dist/shared/hash.d.ts +4 -4
- package/dist/shared/hash.d.ts.map +1 -1
- package/dist/shared/hash.js +20 -4
- package/dist/shared/hash.js.map +1 -1
- package/dist/shared/lock.d.ts +7 -1
- package/dist/shared/lock.d.ts.map +1 -1
- package/dist/shared/lock.js +75 -40
- package/dist/shared/lock.js.map +1 -1
- package/dist/shared/lru.d.ts +55 -0
- package/dist/shared/lru.d.ts.map +1 -1
- package/dist/shared/lru.js +165 -2
- package/dist/shared/lru.js.map +1 -1
- package/dist/shared/minHeap.d.ts +35 -0
- package/dist/shared/minHeap.d.ts.map +1 -0
- package/dist/shared/minHeap.js +116 -0
- package/dist/shared/minHeap.js.map +1 -0
- package/package.json +1 -1
|
@@ -13,6 +13,10 @@ const WORKER_TIMEOUT_MS = 30_000;
|
|
|
13
13
|
export class WorkerManager {
|
|
14
14
|
workers = new Map();
|
|
15
15
|
cleanupInterval = null;
|
|
16
|
+
/** Running counters for O(1) stats - avoids O(n) reduce operations */
|
|
17
|
+
totalProcessedCounter = 0;
|
|
18
|
+
totalFailedCounter = 0;
|
|
19
|
+
totalActiveJobsCounter = 0;
|
|
16
20
|
constructor() {
|
|
17
21
|
this.startCleanup();
|
|
18
22
|
}
|
|
@@ -25,6 +29,11 @@ export class WorkerManager {
|
|
|
25
29
|
}
|
|
26
30
|
/** Unregister a worker */
|
|
27
31
|
unregister(id) {
|
|
32
|
+
const worker = this.workers.get(id);
|
|
33
|
+
if (worker) {
|
|
34
|
+
// Adjust running counters before removal
|
|
35
|
+
this.totalActiveJobsCounter -= worker.activeJobs;
|
|
36
|
+
}
|
|
28
37
|
const removed = this.workers.delete(id);
|
|
29
38
|
if (removed) {
|
|
30
39
|
workerLog.info('Unregistered worker', { workerId: id });
|
|
@@ -48,6 +57,7 @@ export class WorkerManager {
|
|
|
48
57
|
const worker = this.workers.get(id);
|
|
49
58
|
if (worker) {
|
|
50
59
|
worker.activeJobs++;
|
|
60
|
+
this.totalActiveJobsCounter++;
|
|
51
61
|
worker.lastSeen = Date.now();
|
|
52
62
|
}
|
|
53
63
|
}
|
|
@@ -55,8 +65,12 @@ export class WorkerManager {
|
|
|
55
65
|
jobCompleted(id) {
|
|
56
66
|
const worker = this.workers.get(id);
|
|
57
67
|
if (worker) {
|
|
58
|
-
|
|
68
|
+
if (worker.activeJobs > 0) {
|
|
69
|
+
worker.activeJobs--;
|
|
70
|
+
this.totalActiveJobsCounter--;
|
|
71
|
+
}
|
|
59
72
|
worker.processedJobs++;
|
|
73
|
+
this.totalProcessedCounter++;
|
|
60
74
|
worker.lastSeen = Date.now();
|
|
61
75
|
}
|
|
62
76
|
}
|
|
@@ -64,8 +78,12 @@ export class WorkerManager {
|
|
|
64
78
|
jobFailed(id) {
|
|
65
79
|
const worker = this.workers.get(id);
|
|
66
80
|
if (worker) {
|
|
67
|
-
|
|
81
|
+
if (worker.activeJobs > 0) {
|
|
82
|
+
worker.activeJobs--;
|
|
83
|
+
this.totalActiveJobsCounter--;
|
|
84
|
+
}
|
|
68
85
|
worker.failedJobs++;
|
|
86
|
+
this.totalFailedCounter++;
|
|
69
87
|
worker.lastSeen = Date.now();
|
|
70
88
|
}
|
|
71
89
|
}
|
|
@@ -94,6 +112,8 @@ export class WorkerManager {
|
|
|
94
112
|
const staleTimeout = WORKER_TIMEOUT_MS * 3; // Give extra time before removal
|
|
95
113
|
for (const [id, worker] of this.workers) {
|
|
96
114
|
if (now - worker.lastSeen > staleTimeout) {
|
|
115
|
+
// Adjust running counters before removal
|
|
116
|
+
this.totalActiveJobsCounter -= worker.activeJobs;
|
|
97
117
|
this.workers.delete(id);
|
|
98
118
|
workerLog.info('Removed stale worker', { workerId: id, name: worker.name });
|
|
99
119
|
}
|
|
@@ -106,17 +126,22 @@ export class WorkerManager {
|
|
|
106
126
|
this.cleanupInterval = null;
|
|
107
127
|
}
|
|
108
128
|
}
|
|
109
|
-
/** Get stats */
|
|
129
|
+
/** Get stats - O(n) only for active count, O(1) for other metrics */
|
|
110
130
|
getStats() {
|
|
111
|
-
const workers = Array.from(this.workers.values());
|
|
112
131
|
const now = Date.now();
|
|
113
|
-
|
|
132
|
+
let activeWorkers = 0;
|
|
133
|
+
// Only iterate once for active count (time-based, can't use counter)
|
|
134
|
+
for (const worker of this.workers.values()) {
|
|
135
|
+
if (now - worker.lastSeen < WORKER_TIMEOUT_MS) {
|
|
136
|
+
activeWorkers++;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
114
139
|
return {
|
|
115
|
-
total: workers.
|
|
116
|
-
active:
|
|
117
|
-
totalProcessed:
|
|
118
|
-
totalFailed:
|
|
119
|
-
activeJobs:
|
|
140
|
+
total: this.workers.size,
|
|
141
|
+
active: activeWorkers,
|
|
142
|
+
totalProcessed: this.totalProcessedCounter,
|
|
143
|
+
totalFailed: this.totalFailedCounter,
|
|
144
|
+
activeJobs: this.totalActiveJobsCounter,
|
|
120
145
|
};
|
|
121
146
|
}
|
|
122
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerManager.js","sourceRoot":"","sources":["../../src/application/workerManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA8B,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AAEzC,0EAA0E;AAC1E,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC;;GAEG;AACH,MAAM,OAAO,aAAa;IACP,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC/C,eAAe,GAA0C,IAAI,CAAC;IAEtE;QACE,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,4BAA4B;IAC5B,QAAQ,CAAC,IAAY,EAAE,MAAgB;QACrC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,0BAA0B;IAC1B,UAAU,CAAC,EAAY;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,uBAAuB;IACvB,GAAG,CAAC,EAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,mCAAmC;IACnC,SAAS,CAAC,EAAY;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kCAAkC;IAClC,eAAe,CAAC,EAAY;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,YAAY,CAAC,EAAY;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"workerManager.js","sourceRoot":"","sources":["../../src/application/workerManager.ts"],"names":[],"mappings":"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"}
|
package/dist/bunqueue
ADDED
|
Binary file
|
|
@@ -37,6 +37,21 @@ export declare class IndexedPriorityQueue {
|
|
|
37
37
|
values(): Job[];
|
|
38
38
|
/** Clear the queue */
|
|
39
39
|
clear(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Get the ratio of stale entries in the heap
|
|
42
|
+
* Used to decide when to compact
|
|
43
|
+
*/
|
|
44
|
+
getStaleRatio(): number;
|
|
45
|
+
/**
|
|
46
|
+
* Compact the heap by removing stale entries
|
|
47
|
+
* Call when stale ratio exceeds threshold (e.g., 20%)
|
|
48
|
+
* O(n) operation but reclaims memory and improves performance
|
|
49
|
+
*/
|
|
50
|
+
compact(): void;
|
|
51
|
+
/** Rebuild heap property from arbitrary array - O(n) */
|
|
52
|
+
private heapify;
|
|
53
|
+
/** Check if compaction is needed (stale ratio > threshold) */
|
|
54
|
+
needsCompaction(threshold?: number): boolean;
|
|
40
55
|
private removeTop;
|
|
41
56
|
private bubbleUp;
|
|
42
57
|
private bubbleDown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"priorityQueue.d.ts","sourceRoot":"","sources":["../../../src/domain/queue/priorityQueue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAgD/C;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2D;IACjF,OAAO,CAAC,UAAU,CAAM;IAExB,uBAAuB;IACvB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,qBAAqB;IACrB,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,gCAAgC;IAChC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAkBpB,mCAAmC;IACnC,GAAG,IAAI,GAAG,GAAG,IAAI;IAmBjB,wDAAwD;IACxD,IAAI,IAAI,GAAG,GAAG,IAAI;IAgBlB,8BAA8B;IAC9B,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI;IAI9B,iCAAiC;IACjC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAI1B,8DAA8D;IAC9D,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI;IAShC,qCAAqC;IACrC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAyB1D,sDAAsD;IACtD,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAyBpD,mCAAmC;IACnC,MAAM,IAAI,GAAG,EAAE;IAIf,sBAAsB;IACtB,KAAK,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"priorityQueue.d.ts","sourceRoot":"","sources":["../../../src/domain/queue/priorityQueue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAgD/C;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2D;IACjF,OAAO,CAAC,UAAU,CAAM;IAExB,uBAAuB;IACvB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,qBAAqB;IACrB,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,gCAAgC;IAChC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAkBpB,mCAAmC;IACnC,GAAG,IAAI,GAAG,GAAG,IAAI;IAmBjB,wDAAwD;IACxD,IAAI,IAAI,GAAG,GAAG,IAAI;IAgBlB,8BAA8B;IAC9B,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI;IAI9B,iCAAiC;IACjC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAI1B,8DAA8D;IAC9D,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI;IAShC,qCAAqC;IACrC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAyB1D,sDAAsD;IACtD,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAyBpD,mCAAmC;IACnC,MAAM,IAAI,GAAG,EAAE;IAIf,sBAAsB;IACtB,KAAK,IAAI,IAAI;IAMb;;;OAGG;IACH,aAAa,IAAI,MAAM;IAKvB;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAiBf,wDAAwD;IACxD,OAAO,CAAC,OAAO;IAOf,8DAA8D;IAC9D,eAAe,CAAC,SAAS,GAAE,MAAY,GAAG,OAAO;IAMjD,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,IAAI;CAKb"}
|
|
@@ -175,6 +175,46 @@ export class IndexedPriorityQueue {
|
|
|
175
175
|
this.index.clear();
|
|
176
176
|
this.generation = 0n;
|
|
177
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* Get the ratio of stale entries in the heap
|
|
180
|
+
* Used to decide when to compact
|
|
181
|
+
*/
|
|
182
|
+
getStaleRatio() {
|
|
183
|
+
if (this.heap.length === 0)
|
|
184
|
+
return 0;
|
|
185
|
+
return 1 - this.index.size / this.heap.length;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Compact the heap by removing stale entries
|
|
189
|
+
* Call when stale ratio exceeds threshold (e.g., 20%)
|
|
190
|
+
* O(n) operation but reclaims memory and improves performance
|
|
191
|
+
*/
|
|
192
|
+
compact() {
|
|
193
|
+
if (this.heap.length === 0)
|
|
194
|
+
return;
|
|
195
|
+
// Filter out stale entries
|
|
196
|
+
const validEntries = [];
|
|
197
|
+
for (const entry of this.heap) {
|
|
198
|
+
const indexed = this.index.get(entry.jobId);
|
|
199
|
+
if (indexed?.generation === entry.generation) {
|
|
200
|
+
validEntries.push(entry);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// Rebuild heap - O(n) heapify
|
|
204
|
+
this.heap = validEntries;
|
|
205
|
+
this.heapify();
|
|
206
|
+
}
|
|
207
|
+
/** Rebuild heap property from arbitrary array - O(n) */
|
|
208
|
+
heapify() {
|
|
209
|
+
// Start from last non-leaf node and bubble down
|
|
210
|
+
for (let i = Math.floor(this.heap.length / 2) - 1; i >= 0; i--) {
|
|
211
|
+
this.bubbleDown(i);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/** Check if compaction is needed (stale ratio > threshold) */
|
|
215
|
+
needsCompaction(threshold = 0.2) {
|
|
216
|
+
return this.getStaleRatio() > threshold;
|
|
217
|
+
}
|
|
178
218
|
// ============ Heap Operations ============
|
|
179
219
|
removeTop() {
|
|
180
220
|
if (this.heap.length <= 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"priorityQueue.js","sourceRoot":"","sources":["../../../src/domain/queue/priorityQueue.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"priorityQueue.js","sourceRoot":"","sources":["../../../src/domain/queue/priorityQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,15 @@
|
|
|
5
5
|
import type { Job, JobId } from '../types/job';
|
|
6
6
|
import { type QueueState, RateLimiter, ConcurrencyLimiter } from '../types/queue';
|
|
7
7
|
import { IndexedPriorityQueue } from './priorityQueue';
|
|
8
|
+
/** Shard statistics counters for O(1) stats retrieval */
|
|
9
|
+
export interface ShardStats {
|
|
10
|
+
/** Total jobs in all queues (waiting + delayed) */
|
|
11
|
+
queuedJobs: number;
|
|
12
|
+
/** Jobs with runAt > now at time of push */
|
|
13
|
+
delayedJobs: number;
|
|
14
|
+
/** Total jobs in DLQ */
|
|
15
|
+
dlqJobs: number;
|
|
16
|
+
}
|
|
8
17
|
/**
|
|
9
18
|
* Shard contains:
|
|
10
19
|
* - Queues (waiting + delayed jobs)
|
|
@@ -18,10 +27,24 @@ export declare class Shard {
|
|
|
18
27
|
readonly queues: Map<string, IndexedPriorityQueue>;
|
|
19
28
|
/** Dead letter queue by queue name */
|
|
20
29
|
readonly dlq: Map<string, Job[]>;
|
|
30
|
+
/** Running counters for O(1) stats - updated on every operation */
|
|
31
|
+
private readonly stats;
|
|
32
|
+
/** Set of delayed job IDs for tracking when they become ready */
|
|
33
|
+
private readonly delayedJobIds;
|
|
34
|
+
/**
|
|
35
|
+
* Temporal index: sorted array of (createdAt, jobId) for efficient cleanQueue
|
|
36
|
+
* Kept sorted by createdAt for O(log n) binary search + O(k) cleanup
|
|
37
|
+
*/
|
|
38
|
+
private readonly temporalIndex;
|
|
21
39
|
/** Unique keys per queue for deduplication */
|
|
22
40
|
readonly uniqueKeys: Map<string, Set<string>>;
|
|
23
41
|
/** Jobs waiting for dependencies */
|
|
24
42
|
readonly waitingDeps: Map<JobId, Job>;
|
|
43
|
+
/**
|
|
44
|
+
* Reverse index: depId -> Set of jobIds waiting for that dependency
|
|
45
|
+
* Enables O(1) lookup when a dependency completes instead of O(n) scan
|
|
46
|
+
*/
|
|
47
|
+
readonly dependencyIndex: Map<JobId, Set<JobId>>;
|
|
25
48
|
/** Parent jobs waiting for children to complete */
|
|
26
49
|
readonly waitingChildren: Map<JobId, Job>;
|
|
27
50
|
/** Queue state (pause, rate limit, concurrency) */
|
|
@@ -76,6 +99,20 @@ export declare class Shard {
|
|
|
76
99
|
releaseConcurrency(queue: string): void;
|
|
77
100
|
/** Release all resources for a job */
|
|
78
101
|
releaseJobResources(queue: string, uniqueKey: string | null, groupId: string | null): void;
|
|
102
|
+
/**
|
|
103
|
+
* Register a job's dependencies in the reverse index
|
|
104
|
+
* Call when adding a job to waitingDeps
|
|
105
|
+
*/
|
|
106
|
+
registerDependencies(jobId: JobId, dependsOn: JobId[]): void;
|
|
107
|
+
/**
|
|
108
|
+
* Unregister a job's dependencies from the reverse index
|
|
109
|
+
* Call when removing a job from waitingDeps
|
|
110
|
+
*/
|
|
111
|
+
unregisterDependencies(jobId: JobId, dependsOn: JobId[]): void;
|
|
112
|
+
/**
|
|
113
|
+
* Get jobs waiting for a specific dependency - O(1)
|
|
114
|
+
*/
|
|
115
|
+
getJobsWaitingFor(depId: JobId): Set<JobId> | undefined;
|
|
79
116
|
/** Add job to DLQ */
|
|
80
117
|
addToDlq(job: Job): void;
|
|
81
118
|
/** Get DLQ jobs */
|
|
@@ -90,6 +127,36 @@ export declare class Shard {
|
|
|
90
127
|
getDlqCount(queue: string): number;
|
|
91
128
|
/** Get all queue names in this shard */
|
|
92
129
|
getQueueNames(): string[];
|
|
130
|
+
/** Get shard statistics - O(1) */
|
|
131
|
+
getStats(): ShardStats;
|
|
132
|
+
/** Increment queued jobs counter and add to temporal index */
|
|
133
|
+
incrementQueued(jobId: JobId, isDelayed: boolean, createdAt?: number, queue?: string): void;
|
|
134
|
+
/** Decrement queued jobs counter and remove from temporal index */
|
|
135
|
+
decrementQueued(jobId: JobId): void;
|
|
136
|
+
/** Increment DLQ counter */
|
|
137
|
+
incrementDlq(): void;
|
|
138
|
+
/** Decrement DLQ counter */
|
|
139
|
+
decrementDlq(count?: number): void;
|
|
140
|
+
/** Update delayed jobs that have become ready (call periodically) */
|
|
141
|
+
refreshDelayedCount(now: number): void;
|
|
142
|
+
/** Reset all counters (used after drain/obliterate) */
|
|
143
|
+
resetQueuedCounters(): void;
|
|
144
|
+
/** Reset DLQ counter */
|
|
145
|
+
resetDlqCounter(): void;
|
|
146
|
+
/** Add job to temporal index - maintains sorted order by createdAt */
|
|
147
|
+
private addToTemporalIndex;
|
|
148
|
+
/**
|
|
149
|
+
* Get old jobs from temporal index - O(log n + k) where k = returned jobs
|
|
150
|
+
* Returns jobs older than threshold, up to limit
|
|
151
|
+
*/
|
|
152
|
+
getOldJobs(queue: string, thresholdMs: number, limit: number): Array<{
|
|
153
|
+
jobId: JobId;
|
|
154
|
+
createdAt: number;
|
|
155
|
+
}>;
|
|
156
|
+
/** Remove job from temporal index (called after job is cleaned) */
|
|
157
|
+
removeFromTemporalIndex(jobId: JobId): void;
|
|
158
|
+
/** Clear temporal index for a queue */
|
|
159
|
+
clearTemporalIndexForQueue(queue: string): void;
|
|
93
160
|
/** Drain all waiting jobs from queue */
|
|
94
161
|
drain(queue: string): number;
|
|
95
162
|
/** Obliterate queue completely */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shard.d.ts","sourceRoot":"","sources":["../../../src/domain/queue/shard.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"shard.d.ts","sourceRoot":"","sources":["../../../src/domain/queue/shard.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,10 +17,28 @@ export class Shard {
|
|
|
17
17
|
queues = new Map();
|
|
18
18
|
/** Dead letter queue by queue name */
|
|
19
19
|
dlq = new Map();
|
|
20
|
+
/** Running counters for O(1) stats - updated on every operation */
|
|
21
|
+
stats = {
|
|
22
|
+
queuedJobs: 0,
|
|
23
|
+
delayedJobs: 0,
|
|
24
|
+
dlqJobs: 0,
|
|
25
|
+
};
|
|
26
|
+
/** Set of delayed job IDs for tracking when they become ready */
|
|
27
|
+
delayedJobIds = new Set();
|
|
28
|
+
/**
|
|
29
|
+
* Temporal index: sorted array of (createdAt, jobId) for efficient cleanQueue
|
|
30
|
+
* Kept sorted by createdAt for O(log n) binary search + O(k) cleanup
|
|
31
|
+
*/
|
|
32
|
+
temporalIndex = [];
|
|
20
33
|
/** Unique keys per queue for deduplication */
|
|
21
34
|
uniqueKeys = new Map();
|
|
22
35
|
/** Jobs waiting for dependencies */
|
|
23
36
|
waitingDeps = new Map();
|
|
37
|
+
/**
|
|
38
|
+
* Reverse index: depId -> Set of jobIds waiting for that dependency
|
|
39
|
+
* Enables O(1) lookup when a dependency completes instead of O(n) scan
|
|
40
|
+
*/
|
|
41
|
+
dependencyIndex = new Map();
|
|
24
42
|
/** Parent jobs waiting for children to complete */
|
|
25
43
|
waitingChildren = new Map();
|
|
26
44
|
/** Queue state (pause, rate limit, concurrency) */
|
|
@@ -190,6 +208,42 @@ export class Shard {
|
|
|
190
208
|
}
|
|
191
209
|
this.releaseConcurrency(queue);
|
|
192
210
|
}
|
|
211
|
+
// ============ Dependency Index Operations ============
|
|
212
|
+
/**
|
|
213
|
+
* Register a job's dependencies in the reverse index
|
|
214
|
+
* Call when adding a job to waitingDeps
|
|
215
|
+
*/
|
|
216
|
+
registerDependencies(jobId, dependsOn) {
|
|
217
|
+
for (const depId of dependsOn) {
|
|
218
|
+
let waiters = this.dependencyIndex.get(depId);
|
|
219
|
+
if (!waiters) {
|
|
220
|
+
waiters = new Set();
|
|
221
|
+
this.dependencyIndex.set(depId, waiters);
|
|
222
|
+
}
|
|
223
|
+
waiters.add(jobId);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Unregister a job's dependencies from the reverse index
|
|
228
|
+
* Call when removing a job from waitingDeps
|
|
229
|
+
*/
|
|
230
|
+
unregisterDependencies(jobId, dependsOn) {
|
|
231
|
+
for (const depId of dependsOn) {
|
|
232
|
+
const waiters = this.dependencyIndex.get(depId);
|
|
233
|
+
if (waiters) {
|
|
234
|
+
waiters.delete(jobId);
|
|
235
|
+
if (waiters.size === 0) {
|
|
236
|
+
this.dependencyIndex.delete(depId);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get jobs waiting for a specific dependency - O(1)
|
|
243
|
+
*/
|
|
244
|
+
getJobsWaitingFor(depId) {
|
|
245
|
+
return this.dependencyIndex.get(depId);
|
|
246
|
+
}
|
|
193
247
|
// ============ DLQ Operations ============
|
|
194
248
|
/** Add job to DLQ */
|
|
195
249
|
addToDlq(job) {
|
|
@@ -199,6 +253,7 @@ export class Shard {
|
|
|
199
253
|
this.dlq.set(job.queue, dlq);
|
|
200
254
|
}
|
|
201
255
|
dlq.push(job);
|
|
256
|
+
this.incrementDlq();
|
|
202
257
|
}
|
|
203
258
|
/** Get DLQ jobs */
|
|
204
259
|
getDlq(queue, count) {
|
|
@@ -215,6 +270,7 @@ export class Shard {
|
|
|
215
270
|
const idx = dlq.findIndex((j) => j.id === jobId);
|
|
216
271
|
if (idx === -1)
|
|
217
272
|
return null;
|
|
273
|
+
this.decrementDlq();
|
|
218
274
|
return dlq.splice(idx, 1)[0];
|
|
219
275
|
}
|
|
220
276
|
/** Clear DLQ for queue */
|
|
@@ -224,6 +280,7 @@ export class Shard {
|
|
|
224
280
|
return 0;
|
|
225
281
|
const count = dlq.length;
|
|
226
282
|
this.dlq.delete(queue);
|
|
283
|
+
this.decrementDlq(count);
|
|
227
284
|
return count;
|
|
228
285
|
}
|
|
229
286
|
// ============ Queue Stats ============
|
|
@@ -246,17 +303,158 @@ export class Shard {
|
|
|
246
303
|
names.add(name);
|
|
247
304
|
return Array.from(names);
|
|
248
305
|
}
|
|
306
|
+
// ============ Running Counters (O(1) Stats) ============
|
|
307
|
+
/** Get shard statistics - O(1) */
|
|
308
|
+
getStats() {
|
|
309
|
+
return { ...this.stats };
|
|
310
|
+
}
|
|
311
|
+
/** Increment queued jobs counter and add to temporal index */
|
|
312
|
+
incrementQueued(jobId, isDelayed, createdAt, queue) {
|
|
313
|
+
this.stats.queuedJobs++;
|
|
314
|
+
if (isDelayed) {
|
|
315
|
+
this.stats.delayedJobs++;
|
|
316
|
+
this.delayedJobIds.add(jobId);
|
|
317
|
+
}
|
|
318
|
+
// Add to temporal index for efficient cleanQueue
|
|
319
|
+
if (createdAt !== undefined && queue !== undefined) {
|
|
320
|
+
this.addToTemporalIndex(createdAt, jobId, queue);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/** Decrement queued jobs counter and remove from temporal index */
|
|
324
|
+
decrementQueued(jobId) {
|
|
325
|
+
this.stats.queuedJobs = Math.max(0, this.stats.queuedJobs - 1);
|
|
326
|
+
if (this.delayedJobIds.has(jobId)) {
|
|
327
|
+
this.stats.delayedJobs = Math.max(0, this.stats.delayedJobs - 1);
|
|
328
|
+
this.delayedJobIds.delete(jobId);
|
|
329
|
+
}
|
|
330
|
+
// Remove from temporal index (lazy removal - will be cleaned on next cleanQueue)
|
|
331
|
+
}
|
|
332
|
+
/** Increment DLQ counter */
|
|
333
|
+
incrementDlq() {
|
|
334
|
+
this.stats.dlqJobs++;
|
|
335
|
+
}
|
|
336
|
+
/** Decrement DLQ counter */
|
|
337
|
+
decrementDlq(count = 1) {
|
|
338
|
+
this.stats.dlqJobs = Math.max(0, this.stats.dlqJobs - count);
|
|
339
|
+
}
|
|
340
|
+
/** Update delayed jobs that have become ready (call periodically) */
|
|
341
|
+
refreshDelayedCount(now) {
|
|
342
|
+
const toRemove = [];
|
|
343
|
+
for (const jobId of this.delayedJobIds) {
|
|
344
|
+
// Find job in queues to check runAt
|
|
345
|
+
for (const q of this.queues.values()) {
|
|
346
|
+
const job = q.find(jobId);
|
|
347
|
+
if (job && job.runAt <= now) {
|
|
348
|
+
toRemove.push(jobId);
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
for (const jobId of toRemove) {
|
|
354
|
+
this.delayedJobIds.delete(jobId);
|
|
355
|
+
this.stats.delayedJobs = Math.max(0, this.stats.delayedJobs - 1);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
/** Reset all counters (used after drain/obliterate) */
|
|
359
|
+
resetQueuedCounters() {
|
|
360
|
+
this.stats.queuedJobs = 0;
|
|
361
|
+
this.stats.delayedJobs = 0;
|
|
362
|
+
this.delayedJobIds.clear();
|
|
363
|
+
}
|
|
364
|
+
/** Reset DLQ counter */
|
|
365
|
+
resetDlqCounter() {
|
|
366
|
+
this.stats.dlqJobs = 0;
|
|
367
|
+
}
|
|
368
|
+
// ============ Temporal Index (for efficient cleanQueue) ============
|
|
369
|
+
/** Add job to temporal index - maintains sorted order by createdAt */
|
|
370
|
+
addToTemporalIndex(createdAt, jobId, queue) {
|
|
371
|
+
// Binary search to find insertion point
|
|
372
|
+
let lo = 0;
|
|
373
|
+
let hi = this.temporalIndex.length;
|
|
374
|
+
while (lo < hi) {
|
|
375
|
+
const mid = (lo + hi) >>> 1;
|
|
376
|
+
if (this.temporalIndex[mid].createdAt < createdAt) {
|
|
377
|
+
lo = mid + 1;
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
hi = mid;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
this.temporalIndex.splice(lo, 0, { createdAt, jobId, queue });
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Get old jobs from temporal index - O(log n + k) where k = returned jobs
|
|
387
|
+
* Returns jobs older than threshold, up to limit
|
|
388
|
+
*/
|
|
389
|
+
getOldJobs(queue, thresholdMs, limit) {
|
|
390
|
+
const now = Date.now();
|
|
391
|
+
const threshold = now - thresholdMs;
|
|
392
|
+
const result = [];
|
|
393
|
+
// Temporal index is sorted by createdAt ascending (oldest first)
|
|
394
|
+
// Iterate from start until we find jobs newer than threshold
|
|
395
|
+
for (const entry of this.temporalIndex) {
|
|
396
|
+
if (entry.createdAt > threshold)
|
|
397
|
+
break;
|
|
398
|
+
if (entry.queue === queue) {
|
|
399
|
+
result.push({ jobId: entry.jobId, createdAt: entry.createdAt });
|
|
400
|
+
if (result.length >= limit)
|
|
401
|
+
break;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
return result;
|
|
405
|
+
}
|
|
406
|
+
/** Remove job from temporal index (called after job is cleaned) */
|
|
407
|
+
removeFromTemporalIndex(jobId) {
|
|
408
|
+
const idx = this.temporalIndex.findIndex((e) => e.jobId === jobId);
|
|
409
|
+
if (idx !== -1) {
|
|
410
|
+
this.temporalIndex.splice(idx, 1);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
/** Clear temporal index for a queue */
|
|
414
|
+
clearTemporalIndexForQueue(queue) {
|
|
415
|
+
// Filter out entries for this queue
|
|
416
|
+
for (let i = this.temporalIndex.length - 1; i >= 0; i--) {
|
|
417
|
+
if (this.temporalIndex[i].queue === queue) {
|
|
418
|
+
this.temporalIndex.splice(i, 1);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
249
422
|
/** Drain all waiting jobs from queue */
|
|
250
423
|
drain(queue) {
|
|
251
424
|
const q = this.queues.get(queue);
|
|
252
425
|
if (!q)
|
|
253
426
|
return 0;
|
|
254
427
|
const count = q.size;
|
|
428
|
+
// Remove delayed job tracking for drained jobs
|
|
429
|
+
for (const job of q.values()) {
|
|
430
|
+
this.delayedJobIds.delete(job.id);
|
|
431
|
+
}
|
|
255
432
|
q.clear();
|
|
433
|
+
// Clear temporal index for this queue
|
|
434
|
+
this.clearTemporalIndexForQueue(queue);
|
|
435
|
+
// Update counters
|
|
436
|
+
this.stats.queuedJobs = Math.max(0, this.stats.queuedJobs - count);
|
|
437
|
+
this.stats.delayedJobs = Math.max(0, this.stats.delayedJobs);
|
|
256
438
|
return count;
|
|
257
439
|
}
|
|
258
440
|
/** Obliterate queue completely */
|
|
259
441
|
obliterate(queue) {
|
|
442
|
+
// Update counters before deleting
|
|
443
|
+
const q = this.queues.get(queue);
|
|
444
|
+
if (q) {
|
|
445
|
+
for (const job of q.values()) {
|
|
446
|
+
this.delayedJobIds.delete(job.id);
|
|
447
|
+
}
|
|
448
|
+
this.stats.queuedJobs = Math.max(0, this.stats.queuedJobs - q.size);
|
|
449
|
+
}
|
|
450
|
+
const dlqJobs = this.dlq.get(queue);
|
|
451
|
+
if (dlqJobs) {
|
|
452
|
+
this.stats.dlqJobs = Math.max(0, this.stats.dlqJobs - dlqJobs.length);
|
|
453
|
+
}
|
|
454
|
+
// Recalculate delayed count
|
|
455
|
+
this.stats.delayedJobs = this.delayedJobIds.size;
|
|
456
|
+
// Clear temporal index for this queue
|
|
457
|
+
this.clearTemporalIndexForQueue(queue);
|
|
260
458
|
this.queues.delete(queue);
|
|
261
459
|
this.dlq.delete(queue);
|
|
262
460
|
this.uniqueKeys.delete(queue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shard.js","sourceRoot":"","sources":["../../../src/domain/queue/shard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shard.js","sourceRoot":"","sources":["../../../src/domain/queue/shard.ts"],"names":[],"mappings":"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"}
|