bunqueue 1.6.1 → 1.6.3

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 (42) hide show
  1. package/dist/application/eventsManager.d.ts +2 -1
  2. package/dist/application/eventsManager.d.ts.map +1 -1
  3. package/dist/application/eventsManager.js +27 -27
  4. package/dist/application/eventsManager.js.map +1 -1
  5. package/dist/application/operations/pull.d.ts.map +1 -1
  6. package/dist/application/operations/pull.js +7 -5
  7. package/dist/application/operations/pull.js.map +1 -1
  8. package/dist/client/index.d.ts +2 -0
  9. package/dist/client/index.d.ts.map +1 -1
  10. package/dist/client/index.js +1 -0
  11. package/dist/client/index.js.map +1 -1
  12. package/dist/client/manager.d.ts +2 -0
  13. package/dist/client/manager.d.ts.map +1 -1
  14. package/dist/client/manager.js.map +1 -1
  15. package/dist/client/sandboxedWorker.d.ts +90 -0
  16. package/dist/client/sandboxedWorker.d.ts.map +1 -0
  17. package/dist/client/sandboxedWorker.js +299 -0
  18. package/dist/client/sandboxedWorker.js.map +1 -0
  19. package/dist/domain/queue/priorityQueue.d.ts +7 -2
  20. package/dist/domain/queue/priorityQueue.d.ts.map +1 -1
  21. package/dist/domain/queue/priorityQueue.js +29 -16
  22. package/dist/domain/queue/priorityQueue.js.map +1 -1
  23. package/dist/domain/queue/shard.d.ts +2 -2
  24. package/dist/domain/queue/shard.d.ts.map +1 -1
  25. package/dist/domain/queue/shard.js +14 -15
  26. package/dist/domain/queue/shard.js.map +1 -1
  27. package/dist/infrastructure/persistence/sqlite.d.ts +3 -0
  28. package/dist/infrastructure/persistence/sqlite.d.ts.map +1 -1
  29. package/dist/infrastructure/persistence/sqlite.js +24 -9
  30. package/dist/infrastructure/persistence/sqlite.js.map +1 -1
  31. package/dist/infrastructure/server/tcp.d.ts.map +1 -1
  32. package/dist/infrastructure/server/tcp.js +20 -7
  33. package/dist/infrastructure/server/tcp.js.map +1 -1
  34. package/dist/shared/hash.d.ts +2 -1
  35. package/dist/shared/hash.d.ts.map +1 -1
  36. package/dist/shared/hash.js +3 -18
  37. package/dist/shared/hash.js.map +1 -1
  38. package/dist/shared/minHeap.d.ts +11 -2
  39. package/dist/shared/minHeap.d.ts.map +1 -1
  40. package/dist/shared/minHeap.js +29 -12
  41. package/dist/shared/minHeap.js.map +1 -1
  42. package/package.json +10 -7
@@ -0,0 +1,299 @@
1
+ /**
2
+ * Sandboxed Worker
3
+ * Runs job processors in isolated Bun Worker processes
4
+ */
5
+ import { getSharedManager } from './manager';
6
+ import { join } from 'path';
7
+ import { writeFileSync, unlinkSync, existsSync, mkdirSync } from 'fs';
8
+ import { tmpdir } from 'os';
9
+ /**
10
+ * Sandboxed Worker - runs processors in isolated Bun Worker processes
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { Queue, SandboxedWorker } from 'bunqueue/client';
15
+ *
16
+ * const queue = new Queue('cpu-intensive');
17
+ *
18
+ * // Create processor file: processor.ts
19
+ * // export default async (job) => {
20
+ * // const result = heavyComputation(job.data);
21
+ * // return result;
22
+ * // };
23
+ *
24
+ * const worker = new SandboxedWorker('cpu-intensive', {
25
+ * processor: './processor.ts',
26
+ * concurrency: 4,
27
+ * timeout: 60000,
28
+ * });
29
+ *
30
+ * await worker.start();
31
+ * // Workers process jobs in isolated processes
32
+ * // If one crashes, others continue working
33
+ * ```
34
+ */
35
+ export class SandboxedWorker {
36
+ queueName;
37
+ options;
38
+ workers = [];
39
+ running = false;
40
+ pullPromise = null;
41
+ wrapperPath = null;
42
+ manager;
43
+ constructor(queueName, options) {
44
+ this.queueName = queueName;
45
+ this.manager = options.manager ?? getSharedManager();
46
+ this.options = {
47
+ processor: options.processor,
48
+ concurrency: options.concurrency ?? 1,
49
+ maxMemory: options.maxMemory ?? 256,
50
+ timeout: options.timeout ?? 30000,
51
+ autoRestart: options.autoRestart ?? true,
52
+ maxRestarts: options.maxRestarts ?? 10,
53
+ pollInterval: options.pollInterval ?? 10,
54
+ };
55
+ }
56
+ /** Start the sandboxed worker pool */
57
+ start() {
58
+ if (this.running)
59
+ return;
60
+ this.running = true;
61
+ // Create wrapper script for workers
62
+ this.wrapperPath = this.createWrapperScript();
63
+ // Spawn worker processes
64
+ for (let i = 0; i < this.options.concurrency; i++) {
65
+ this.spawnWorker(i);
66
+ }
67
+ // Start pulling jobs
68
+ this.pullPromise = this.pullLoop();
69
+ }
70
+ /** Stop all workers gracefully */
71
+ async stop() {
72
+ this.running = false;
73
+ // Clear all timeouts
74
+ for (const wp of this.workers) {
75
+ if (wp.timeoutId) {
76
+ clearTimeout(wp.timeoutId);
77
+ }
78
+ }
79
+ // Terminate all workers
80
+ for (const wp of this.workers) {
81
+ wp.worker.terminate();
82
+ }
83
+ this.workers.length = 0;
84
+ // Wait for pull loop to finish
85
+ if (this.pullPromise) {
86
+ await this.pullPromise;
87
+ }
88
+ // Cleanup wrapper script
89
+ if (this.wrapperPath && existsSync(this.wrapperPath)) {
90
+ try {
91
+ unlinkSync(this.wrapperPath);
92
+ }
93
+ catch {
94
+ // Ignore cleanup errors
95
+ }
96
+ }
97
+ }
98
+ /** Get worker pool stats */
99
+ getStats() {
100
+ const busy = this.workers.filter((w) => w.busy).length;
101
+ const restarts = this.workers.reduce((sum, w) => sum + w.restarts, 0);
102
+ return {
103
+ total: this.workers.length,
104
+ busy,
105
+ idle: this.workers.length - busy,
106
+ restarts,
107
+ };
108
+ }
109
+ /** Create wrapper script file that loads the processor */
110
+ createWrapperScript() {
111
+ const processorPath = this.options.processor.startsWith('/')
112
+ ? this.options.processor
113
+ : join(process.cwd(), this.options.processor);
114
+ const wrapperCode = `
115
+ // Sandboxed Worker Wrapper
116
+ const processor = (await import('${processorPath}')).default;
117
+
118
+ self.onmessage = async (event) => {
119
+ const { type, job } = event.data;
120
+ if (type !== 'job') return;
121
+
122
+ try {
123
+ const result = await processor({
124
+ id: job.id,
125
+ data: job.data,
126
+ queue: job.queue,
127
+ attempts: job.attempts,
128
+ progress: (value) => {
129
+ self.postMessage({ type: 'progress', jobId: job.id, progress: value });
130
+ },
131
+ });
132
+
133
+ self.postMessage({ type: 'result', jobId: job.id, result });
134
+ } catch (err) {
135
+ self.postMessage({
136
+ type: 'error',
137
+ jobId: job.id,
138
+ error: err instanceof Error ? err.message : String(err),
139
+ });
140
+ }
141
+ };
142
+ `;
143
+ // Write to temp file
144
+ const tempDir = join(tmpdir(), 'bunqueue-workers');
145
+ if (!existsSync(tempDir)) {
146
+ mkdirSync(tempDir, { recursive: true });
147
+ }
148
+ const wrapperPath = join(tempDir, `worker-${this.queueName}-${Date.now()}.ts`);
149
+ writeFileSync(wrapperPath, wrapperCode);
150
+ return wrapperPath;
151
+ }
152
+ /** Spawn a single worker process */
153
+ spawnWorker(index) {
154
+ if (!this.wrapperPath)
155
+ return;
156
+ const worker = new Worker(this.wrapperPath, {
157
+ smol: this.options.maxMemory <= 64,
158
+ });
159
+ const wp = {
160
+ worker,
161
+ busy: false,
162
+ currentJob: null,
163
+ restarts: this.workers[index]?.restarts ?? 0,
164
+ timeoutId: null,
165
+ };
166
+ // Handle messages from worker
167
+ worker.onmessage = (event) => {
168
+ this.handleWorkerMessage(wp, event.data);
169
+ };
170
+ // Handle worker errors/crashes
171
+ worker.onerror = (error) => {
172
+ console.error(`[SandboxedWorker] Worker ${index} error:`, error.message);
173
+ this.handleWorkerCrash(wp, index);
174
+ };
175
+ if (this.workers[index]) {
176
+ this.workers[index] = wp;
177
+ }
178
+ else {
179
+ this.workers.push(wp);
180
+ }
181
+ }
182
+ /** Main loop - pull jobs and dispatch to workers */
183
+ async pullLoop() {
184
+ while (this.running) {
185
+ // Find idle worker
186
+ const idleWorker = this.workers.find((w) => !w.busy);
187
+ if (!idleWorker) {
188
+ await Bun.sleep(this.options.pollInterval);
189
+ continue;
190
+ }
191
+ // Pull job from queue using manager
192
+ const job = await this.manager.pull(this.queueName, 1000);
193
+ if (!job)
194
+ continue;
195
+ // Dispatch to worker
196
+ this.dispatchJob(idleWorker, job);
197
+ }
198
+ }
199
+ /** Dispatch job to a worker process */
200
+ dispatchJob(wp, job) {
201
+ wp.busy = true;
202
+ wp.currentJob = job;
203
+ // Set timeout
204
+ wp.timeoutId = setTimeout(() => {
205
+ this.handleJobTimeout(wp, job);
206
+ }, this.options.timeout);
207
+ // Send job to worker
208
+ const request = {
209
+ type: 'job',
210
+ job: {
211
+ id: String(job.id),
212
+ data: job.data,
213
+ queue: job.queue,
214
+ attempts: job.attempts,
215
+ },
216
+ };
217
+ wp.worker.postMessage(request);
218
+ }
219
+ /** Handle message from worker */
220
+ handleWorkerMessage(wp, msg) {
221
+ if (!wp.currentJob || msg.jobId !== String(wp.currentJob.id))
222
+ return;
223
+ switch (msg.type) {
224
+ case 'result':
225
+ this.completeJob(wp, msg.result);
226
+ break;
227
+ case 'error':
228
+ this.failJob(wp, msg.error ?? 'Unknown error');
229
+ break;
230
+ case 'progress':
231
+ if (msg.progress !== undefined) {
232
+ this.manager.updateProgress(wp.currentJob.id, msg.progress).catch(() => { });
233
+ }
234
+ break;
235
+ }
236
+ }
237
+ /** Complete a job successfully */
238
+ completeJob(wp, result) {
239
+ if (wp.timeoutId) {
240
+ clearTimeout(wp.timeoutId);
241
+ wp.timeoutId = null;
242
+ }
243
+ if (wp.currentJob) {
244
+ const jobId = wp.currentJob.id;
245
+ this.manager.ack(jobId, result).catch((err) => {
246
+ console.error(`[SandboxedWorker] Failed to ack job ${jobId}:`, err);
247
+ });
248
+ }
249
+ wp.busy = false;
250
+ wp.currentJob = null;
251
+ }
252
+ /** Fail a job */
253
+ failJob(wp, error) {
254
+ if (wp.timeoutId) {
255
+ clearTimeout(wp.timeoutId);
256
+ wp.timeoutId = null;
257
+ }
258
+ if (wp.currentJob) {
259
+ const jobId = wp.currentJob.id;
260
+ this.manager.fail(jobId, error).catch((err) => {
261
+ console.error(`[SandboxedWorker] Failed to fail job ${jobId}:`, err);
262
+ });
263
+ }
264
+ wp.busy = false;
265
+ wp.currentJob = null;
266
+ }
267
+ /** Handle job timeout */
268
+ handleJobTimeout(wp, job) {
269
+ console.error(`[SandboxedWorker] Job ${job.id} timed out after ${this.options.timeout}ms`);
270
+ // Terminate the stuck worker
271
+ wp.worker.terminate();
272
+ // Fail the job
273
+ this.manager.fail(job.id, `Job timed out after ${this.options.timeout}ms`).catch(() => { });
274
+ // Restart worker if allowed
275
+ const index = this.workers.indexOf(wp);
276
+ if (index !== -1) {
277
+ this.handleWorkerCrash(wp, index);
278
+ }
279
+ }
280
+ /** Handle worker crash and potentially restart */
281
+ handleWorkerCrash(wp, index) {
282
+ // Fail current job if any
283
+ if (wp.currentJob) {
284
+ this.manager.fail(wp.currentJob.id, 'Worker crashed').catch(() => { });
285
+ }
286
+ wp.busy = false;
287
+ wp.currentJob = null;
288
+ wp.restarts++;
289
+ // Check if we should restart
290
+ if (this.options.autoRestart && wp.restarts < this.options.maxRestarts && this.running) {
291
+ console.log(`[SandboxedWorker] Restarting worker ${index} (attempt ${wp.restarts})`);
292
+ this.spawnWorker(index);
293
+ }
294
+ else if (wp.restarts >= this.options.maxRestarts) {
295
+ console.error(`[SandboxedWorker] Worker ${index} exceeded max restarts (${this.options.maxRestarts})`);
296
+ }
297
+ }
298
+ }
299
+ //# sourceMappingURL=sandboxedWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandboxedWorker.js","sourceRoot":"","sources":["../../src/client/sandboxedWorker.ts"],"names":[],"mappings":"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"}
@@ -5,11 +5,14 @@
5
5
  */
6
6
  import type { Job, JobId } from '../types/job';
7
7
  /**
8
- * Indexed Priority Queue implementation
9
- * O(log n) push, pop, update
8
+ * Indexed Priority Queue implementation with 4-ary heap
9
+ * 4-ary provides better cache locality than binary heap
10
+ * O(log₄ n) push, pop, update
10
11
  * O(1) find, has
11
12
  */
12
13
  export declare class IndexedPriorityQueue {
14
+ /** Branching factor - 4 provides optimal cache performance */
15
+ private static readonly D;
13
16
  private heap;
14
17
  private readonly index;
15
18
  private generation;
@@ -53,7 +56,9 @@ export declare class IndexedPriorityQueue {
53
56
  /** Check if compaction is needed (stale ratio > threshold) */
54
57
  needsCompaction(threshold?: number): boolean;
55
58
  private removeTop;
59
+ /** 4-ary bubbleUp: parent at floor((idx-1)/D) */
56
60
  private bubbleUp;
61
+ /** 4-ary bubbleDown: children at D*idx+1 through D*idx+D */
57
62
  private bubbleDown;
58
63
  private swap;
59
64
  }
@@ -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;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"}
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;;;;;GAKG;AACH,qBAAa,oBAAoB;IAC/B,8DAA8D;IAC9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAK;IAC9B,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2D;IAEjF,OAAO,CAAC,UAAU,CAAK;IAEvB,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;IASf,8DAA8D;IAC9D,eAAe,CAAC,SAAS,GAAE,MAAY,GAAG,OAAO;IAMjD,OAAO,CAAC,SAAS;IASjB,iDAAiD;IACjD,OAAO,CAAC,QAAQ;IAYhB,4DAA4D;IAC5D,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,IAAI;CAKb"}
@@ -41,14 +41,18 @@ function compareEntries(a, b) {
41
41
  return 0;
42
42
  }
43
43
  /**
44
- * Indexed Priority Queue implementation
45
- * O(log n) push, pop, update
44
+ * Indexed Priority Queue implementation with 4-ary heap
45
+ * 4-ary provides better cache locality than binary heap
46
+ * O(log₄ n) push, pop, update
46
47
  * O(1) find, has
47
48
  */
48
49
  export class IndexedPriorityQueue {
50
+ /** Branching factor - 4 provides optimal cache performance */
51
+ static D = 4;
49
52
  heap = [];
50
53
  index = new Map();
51
- generation = 0n;
54
+ // Use Number instead of BigInt - 2^53 operations is enough for 285 years at 1M ops/sec
55
+ generation = 0;
52
56
  /** Get current size */
53
57
  get size() {
54
58
  return this.index.size;
@@ -59,7 +63,7 @@ export class IndexedPriorityQueue {
59
63
  }
60
64
  /** Push a job into the queue */
61
65
  push(job) {
62
- const gen = Number(this.generation++);
66
+ const gen = this.generation++;
63
67
  // Store in index
64
68
  this.index.set(job.id, { job, generation: gen });
65
69
  // Add to heap
@@ -130,7 +134,7 @@ export class IndexedPriorityQueue {
130
134
  const job = indexed.job;
131
135
  job.priority = newPriority;
132
136
  // Create new heap entry with new generation
133
- const gen = Number(this.generation++);
137
+ const gen = this.generation++;
134
138
  indexed.generation = gen;
135
139
  const entry = {
136
140
  jobId: job.id,
@@ -152,7 +156,7 @@ export class IndexedPriorityQueue {
152
156
  const job = indexed.job;
153
157
  job.runAt = newRunAt;
154
158
  // Create new heap entry
155
- const gen = Number(this.generation++);
159
+ const gen = this.generation++;
156
160
  indexed.generation = gen;
157
161
  const entry = {
158
162
  jobId: job.id,
@@ -173,7 +177,7 @@ export class IndexedPriorityQueue {
173
177
  clear() {
174
178
  this.heap = [];
175
179
  this.index.clear();
176
- this.generation = 0n;
180
+ this.generation = 0;
177
181
  }
178
182
  /**
179
183
  * Get the ratio of stale entries in the heap
@@ -206,8 +210,10 @@ export class IndexedPriorityQueue {
206
210
  }
207
211
  /** Rebuild heap property from arbitrary array - O(n) */
208
212
  heapify() {
213
+ const D = IndexedPriorityQueue.D;
209
214
  // Start from last non-leaf node and bubble down
210
- for (let i = Math.floor(this.heap.length / 2) - 1; i >= 0; i--) {
215
+ // In D-ary heap, last non-leaf is at floor((n-2)/D)
216
+ for (let i = Math.floor((this.heap.length - 2) / D); i >= 0; i--) {
211
217
  this.bubbleDown(i);
212
218
  }
213
219
  }
@@ -224,9 +230,11 @@ export class IndexedPriorityQueue {
224
230
  this.heap[0] = this.heap.pop();
225
231
  this.bubbleDown(0);
226
232
  }
233
+ /** 4-ary bubbleUp: parent at floor((idx-1)/D) */
227
234
  bubbleUp(idx) {
235
+ const D = IndexedPriorityQueue.D;
228
236
  while (idx > 0) {
229
- const parentIdx = Math.floor((idx - 1) / 2);
237
+ const parentIdx = Math.floor((idx - 1) / D);
230
238
  if (compareEntries(this.heap[idx], this.heap[parentIdx]) >= 0) {
231
239
  break;
232
240
  }
@@ -234,17 +242,22 @@ export class IndexedPriorityQueue {
234
242
  idx = parentIdx;
235
243
  }
236
244
  }
245
+ /** 4-ary bubbleDown: children at D*idx+1 through D*idx+D */
237
246
  bubbleDown(idx) {
247
+ const D = IndexedPriorityQueue.D;
238
248
  const length = this.heap.length;
249
+ const heap = this.heap;
239
250
  while (true) {
240
- const leftIdx = 2 * idx + 1;
241
- const rightIdx = 2 * idx + 2;
251
+ const firstChild = D * idx + 1;
252
+ if (firstChild >= length)
253
+ break;
254
+ // Find minimum among up to D children (cache-friendly sequential access)
242
255
  let smallest = idx;
243
- if (leftIdx < length && compareEntries(this.heap[leftIdx], this.heap[smallest]) < 0) {
244
- smallest = leftIdx;
245
- }
246
- if (rightIdx < length && compareEntries(this.heap[rightIdx], this.heap[smallest]) < 0) {
247
- smallest = rightIdx;
256
+ const lastChild = Math.min(firstChild + D, length);
257
+ for (let c = firstChild; c < lastChild; c++) {
258
+ if (compareEntries(heap[c], heap[smallest]) < 0) {
259
+ smallest = c;
260
+ }
248
261
  }
249
262
  if (smallest === idx)
250
263
  break;
@@ -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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"}
@@ -69,9 +69,9 @@ export declare class Shard {
69
69
  readonly rateLimiters: Map<string, RateLimiter>;
70
70
  /** Concurrency limiters per queue */
71
71
  readonly concurrencyLimiters: Map<string, ConcurrencyLimiter>;
72
- /** Waiters for new jobs (condition variable pattern) */
72
+ /** Waiter entry with cancellation flag for O(1) cleanup */
73
73
  private readonly waiters;
74
- /** Notify that jobs are available - wakes all waiters */
74
+ /** Notify that jobs are available - wakes first non-cancelled waiter */
75
75
  notify(): void;
76
76
  /** Wait for a job to become available (with timeout) */
77
77
  waitForJob(timeoutMs: number): Promise<void>;
@@ -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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"}
@@ -64,13 +64,17 @@ export class Shard {
64
64
  rateLimiters = new Map();
65
65
  /** Concurrency limiters per queue */
66
66
  concurrencyLimiters = new Map();
67
- /** Waiters for new jobs (condition variable pattern) */
67
+ /** Waiter entry with cancellation flag for O(1) cleanup */
68
68
  waiters = [];
69
- /** Notify that jobs are available - wakes all waiters */
69
+ /** Notify that jobs are available - wakes first non-cancelled waiter */
70
70
  notify() {
71
- const toNotify = this.waiters.splice(0);
72
- for (const waiter of toNotify) {
73
- waiter();
71
+ // Skip cancelled entries at head - O(k) where k = cancelled
72
+ while (this.waiters.length > 0) {
73
+ const waiter = this.waiters.shift();
74
+ if (!waiter.cancelled) {
75
+ waiter.resolve();
76
+ break;
77
+ }
74
78
  }
75
79
  }
76
80
  /** Wait for a job to become available (with timeout) */
@@ -79,21 +83,16 @@ export class Shard {
79
83
  return Promise.resolve();
80
84
  }
81
85
  return new Promise((resolve) => {
82
- let resolved = false;
86
+ const waiter = { resolve, cancelled: false };
83
87
  const cleanup = () => {
84
- if (resolved)
88
+ if (waiter.cancelled)
85
89
  return;
86
- resolved = true;
87
- const idx = this.waiters.indexOf(waiterFn);
88
- if (idx !== -1)
89
- this.waiters.splice(idx, 1);
90
+ // O(1) cancellation - just mark, don't search/splice
91
+ waiter.cancelled = true;
90
92
  resolve();
91
93
  };
92
- const waiterFn = () => {
93
- cleanup();
94
- };
95
94
  // Add to waiters
96
- this.waiters.push(waiterFn);
95
+ this.waiters.push(waiter);
97
96
  // Timeout fallback
98
97
  setTimeout(cleanup, Math.min(timeoutMs, 100)); // Max 100ms wait to allow checking other conditions
99
98
  });