bunqueue 1.9.1 → 1.9.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.
- package/dist/application/operations/queueControl.d.ts.map +1 -1
- package/dist/application/operations/queueControl.js +6 -1
- package/dist/application/operations/queueControl.js.map +1 -1
- package/dist/application/queueManager.d.ts +115 -9
- package/dist/application/queueManager.d.ts.map +1 -1
- package/dist/application/queueManager.js +535 -26
- package/dist/application/queueManager.js.map +1 -1
- package/dist/cli/client.d.ts +6 -0
- package/dist/cli/client.d.ts.map +1 -1
- package/dist/cli/client.js +60 -48
- package/dist/cli/client.js.map +1 -1
- package/dist/cli/commands/server.d.ts.map +1 -1
- package/dist/cli/commands/server.js +30 -14
- package/dist/cli/commands/server.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +10 -6
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +15 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/client/queue/dlqOps.d.ts +24 -0
- package/dist/client/queue/dlqOps.d.ts.map +1 -0
- package/dist/client/queue/dlqOps.js +73 -0
- package/dist/client/queue/dlqOps.js.map +1 -0
- package/dist/client/queue/helpers.d.ts +20 -0
- package/dist/client/queue/helpers.d.ts.map +1 -0
- package/dist/client/queue/helpers.js +34 -0
- package/dist/client/queue/helpers.js.map +1 -0
- package/dist/client/queue/index.d.ts +8 -0
- package/dist/client/queue/index.d.ts.map +1 -0
- package/dist/client/queue/index.js +8 -0
- package/dist/client/queue/index.js.map +1 -0
- package/dist/client/queue/queue.d.ts +60 -0
- package/dist/client/queue/queue.d.ts.map +1 -0
- package/dist/client/queue/queue.js +322 -0
- package/dist/client/queue/queue.js.map +1 -0
- package/dist/client/queue.d.ts +3 -78
- package/dist/client/queue.d.ts.map +1 -1
- package/dist/client/queue.js +3 -463
- package/dist/client/queue.js.map +1 -1
- package/dist/client/sandboxed/index.d.ts +8 -0
- package/dist/client/sandboxed/index.d.ts.map +1 -0
- package/dist/client/sandboxed/index.js +7 -0
- package/dist/client/sandboxed/index.js.map +1 -0
- package/dist/client/sandboxed/types.d.ts +62 -0
- package/dist/client/sandboxed/types.d.ts.map +1 -0
- package/dist/client/sandboxed/types.js +6 -0
- package/dist/client/sandboxed/types.js.map +1 -0
- package/dist/client/sandboxed/worker.d.ts +38 -0
- package/dist/client/sandboxed/worker.d.ts.map +1 -0
- package/dist/client/sandboxed/worker.js +176 -0
- package/dist/client/sandboxed/worker.js.map +1 -0
- package/dist/client/sandboxed/wrapper.d.ts +13 -0
- package/dist/client/sandboxed/wrapper.d.ts.map +1 -0
- package/dist/client/sandboxed/wrapper.js +65 -0
- package/dist/client/sandboxed/wrapper.js.map +1 -0
- package/dist/client/sandboxedWorker.d.ts +4 -87
- package/dist/client/sandboxedWorker.d.ts.map +1 -1
- package/dist/client/sandboxedWorker.js +3 -296
- package/dist/client/sandboxedWorker.js.map +1 -1
- package/dist/client/tcp/client.d.ts +40 -0
- package/dist/client/tcp/client.d.ts.map +1 -0
- package/dist/client/tcp/client.js +289 -0
- package/dist/client/tcp/client.js.map +1 -0
- package/dist/client/tcp/connection.d.ts +57 -0
- package/dist/client/tcp/connection.d.ts.map +1 -0
- package/dist/client/tcp/connection.js +162 -0
- package/dist/client/tcp/connection.js.map +1 -0
- package/dist/client/tcp/health.d.ts +47 -0
- package/dist/client/tcp/health.d.ts.map +1 -0
- package/dist/client/tcp/health.js +95 -0
- package/dist/client/tcp/health.js.map +1 -0
- package/dist/client/tcp/index.d.ts +13 -0
- package/dist/client/tcp/index.d.ts.map +1 -0
- package/dist/client/tcp/index.js +12 -0
- package/dist/client/tcp/index.js.map +1 -0
- package/dist/client/tcp/lineBuffer.d.ts +17 -0
- package/dist/client/tcp/lineBuffer.d.ts.map +1 -0
- package/dist/client/tcp/lineBuffer.js +32 -0
- package/dist/client/tcp/lineBuffer.js.map +1 -0
- package/dist/client/tcp/reconnect.d.ts +38 -0
- package/dist/client/tcp/reconnect.d.ts.map +1 -0
- package/dist/client/tcp/reconnect.js +70 -0
- package/dist/client/tcp/reconnect.js.map +1 -0
- package/dist/client/tcp/shared.d.ts +11 -0
- package/dist/client/tcp/shared.d.ts.map +1 -0
- package/dist/client/tcp/shared.js +20 -0
- package/dist/client/tcp/shared.js.map +1 -0
- package/dist/client/tcp/types.d.ts +76 -0
- package/dist/client/tcp/types.d.ts.map +1 -0
- package/dist/client/tcp/types.js +20 -0
- package/dist/client/tcp/types.js.map +1 -0
- package/dist/client/tcpClient.d.ts +4 -110
- package/dist/client/tcpClient.d.ts.map +1 -1
- package/dist/client/tcpClient.js +3 -523
- package/dist/client/tcpClient.js.map +1 -1
- package/dist/client/tcpPool.d.ts +3 -0
- package/dist/client/tcpPool.d.ts.map +1 -1
- package/dist/client/tcpPool.js +21 -2
- package/dist/client/tcpPool.js.map +1 -1
- package/dist/client/types.d.ts +11 -2
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/types.js.map +1 -1
- package/dist/client/worker/ackBatcher.d.ts +40 -0
- package/dist/client/worker/ackBatcher.d.ts.map +1 -0
- package/dist/client/worker/ackBatcher.js +137 -0
- package/dist/client/worker/ackBatcher.js.map +1 -0
- package/dist/client/worker/index.d.ts +11 -0
- package/dist/client/worker/index.d.ts.map +1 -0
- package/dist/client/worker/index.js +10 -0
- package/dist/client/worker/index.js.map +1 -0
- package/dist/client/worker/jobParser.d.ts +10 -0
- package/dist/client/worker/jobParser.d.ts.map +1 -0
- package/dist/client/worker/jobParser.js +43 -0
- package/dist/client/worker/jobParser.js.map +1 -0
- package/dist/client/worker/processor.d.ts +24 -0
- package/dist/client/worker/processor.d.ts.map +1 -0
- package/dist/client/worker/processor.js +86 -0
- package/dist/client/worker/processor.js.map +1 -0
- package/dist/client/worker/types.d.ts +38 -0
- package/dist/client/worker/types.d.ts.map +1 -0
- package/dist/client/worker/types.js +14 -0
- package/dist/client/worker/types.js.map +1 -0
- package/dist/client/worker/worker.d.ts +53 -0
- package/dist/client/worker/worker.d.ts.map +1 -0
- package/dist/client/worker/worker.js +367 -0
- package/dist/client/worker/worker.js.map +1 -0
- package/dist/client/worker.d.ts +3 -69
- package/dist/client/worker.d.ts.map +1 -1
- package/dist/client/worker.js +3 -472
- package/dist/client/worker.js.map +1 -1
- package/dist/domain/queue/shard.d.ts +19 -2
- package/dist/domain/queue/shard.d.ts.map +1 -1
- package/dist/domain/queue/shard.js +36 -4
- package/dist/domain/queue/shard.js.map +1 -1
- package/dist/domain/types/command.d.ts +9 -0
- package/dist/domain/types/command.d.ts.map +1 -1
- package/dist/domain/types/job.d.ts +27 -0
- package/dist/domain/types/job.d.ts.map +1 -1
- package/dist/domain/types/job.js +34 -0
- package/dist/domain/types/job.js.map +1 -1
- package/dist/domain/types/response.d.ts +15 -1
- package/dist/domain/types/response.d.ts.map +1 -1
- package/dist/domain/types/response.js +16 -0
- package/dist/domain/types/response.js.map +1 -1
- package/dist/infrastructure/server/handlers/core.d.ts +1 -1
- package/dist/infrastructure/server/handlers/core.d.ts.map +1 -1
- package/dist/infrastructure/server/handlers/core.js +74 -15
- package/dist/infrastructure/server/handlers/core.js.map +1 -1
- package/dist/infrastructure/server/handlers/monitoring.d.ts.map +1 -1
- package/dist/infrastructure/server/handlers/monitoring.js +6 -4
- package/dist/infrastructure/server/handlers/monitoring.js.map +1 -1
- package/dist/infrastructure/server/http.d.ts +10 -3
- package/dist/infrastructure/server/http.d.ts.map +1 -1
- package/dist/infrastructure/server/http.js +244 -163
- package/dist/infrastructure/server/http.js.map +1 -1
- package/dist/infrastructure/server/tcp.d.ts +8 -3
- package/dist/infrastructure/server/tcp.d.ts.map +1 -1
- package/dist/infrastructure/server/tcp.js +77 -57
- package/dist/infrastructure/server/tcp.js.map +1 -1
- package/dist/infrastructure/server/types.d.ts +2 -0
- package/dist/infrastructure/server/types.d.ts.map +1 -1
- package/dist/main.js +24 -4
- package/dist/main.js.map +1 -1
- package/package.json +1 -1
package/dist/client/worker.js
CHANGED
|
@@ -1,475 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Worker -
|
|
3
|
-
*
|
|
4
|
-
* Optional: embedded mode with { embedded: true }
|
|
5
|
-
*
|
|
6
|
-
* Performance optimizations:
|
|
7
|
-
* - Batch pull: fetches multiple jobs per round-trip (batchSize option)
|
|
8
|
-
* - Batch ACK with results: acknowledges multiple jobs per round-trip
|
|
9
|
-
* - Connection pooling: optional pool for high-concurrency scenarios
|
|
10
|
-
* - Long polling: reduces round-trips when queue is empty
|
|
11
|
-
* - TCP heartbeats: keeps jobs alive for stall detection
|
|
2
|
+
* Worker - Re-exports from worker module
|
|
3
|
+
* @deprecated Import from './worker' instead
|
|
12
4
|
*/
|
|
13
|
-
|
|
14
|
-
import { getSharedManager } from './manager';
|
|
15
|
-
// TCP connection pool is always used in TCP mode
|
|
16
|
-
import { TcpConnectionPool } from './tcpPool';
|
|
17
|
-
import { createPublicJob } from './types';
|
|
18
|
-
import { jobId } from '../domain/types/job';
|
|
19
|
-
/** Check if embedded mode should be forced (for tests) */
|
|
20
|
-
const FORCE_EMBEDDED = process.env.BUNQUEUE_EMBEDDED === '1';
|
|
21
|
-
/**
|
|
22
|
-
* Worker class for processing jobs
|
|
23
|
-
* Default: connects to bunqueue server via TCP
|
|
24
|
-
* Use { embedded: true } for in-process mode
|
|
25
|
-
* Set BUNQUEUE_EMBEDDED=1 env var to force embedded mode
|
|
26
|
-
*/
|
|
27
|
-
export class Worker extends EventEmitter {
|
|
28
|
-
name;
|
|
29
|
-
opts;
|
|
30
|
-
processor;
|
|
31
|
-
embedded;
|
|
32
|
-
tcp;
|
|
33
|
-
tcpPool;
|
|
34
|
-
running = false;
|
|
35
|
-
activeJobs = 0;
|
|
36
|
-
pollTimer = null;
|
|
37
|
-
activeJobIds = new Set(); // Track active job IDs for heartbeat
|
|
38
|
-
cachedActiveJobIds = []; // Cached array for heartbeat (avoid Array.from on each heartbeat)
|
|
39
|
-
activeJobIdsDirty = false; // Flag to rebuild cache
|
|
40
|
-
heartbeatTimer = null;
|
|
41
|
-
consecutiveErrors = 0;
|
|
42
|
-
// O(1) queue for batch-pulled jobs (avoid shift() which is O(n))
|
|
43
|
-
pendingJobs = [];
|
|
44
|
-
pendingJobsHead = 0; // Index of next job to process
|
|
45
|
-
// Batch ACK state
|
|
46
|
-
pendingAcks = [];
|
|
47
|
-
ackTimer = null;
|
|
48
|
-
ackBatchSize;
|
|
49
|
-
ackInterval;
|
|
50
|
-
static MAX_BACKOFF_MS = 30_000;
|
|
51
|
-
static BASE_BACKOFF_MS = 100;
|
|
52
|
-
static MAX_POLL_TIMEOUT = 30_000;
|
|
53
|
-
constructor(name, processor, opts = {}) {
|
|
54
|
-
super();
|
|
55
|
-
this.name = name;
|
|
56
|
-
this.processor = processor;
|
|
57
|
-
this.embedded = opts.embedded ?? FORCE_EMBEDDED;
|
|
58
|
-
const concurrency = opts.concurrency ?? 1;
|
|
59
|
-
this.opts = {
|
|
60
|
-
concurrency,
|
|
61
|
-
autorun: opts.autorun ?? true,
|
|
62
|
-
heartbeatInterval: opts.heartbeatInterval ?? 10000,
|
|
63
|
-
batchSize: Math.min(opts.batchSize ?? 10, 1000), // Default 10, max 1000
|
|
64
|
-
pollTimeout: Math.min(opts.pollTimeout ?? 0, Worker.MAX_POLL_TIMEOUT), // Default 0, max 30s
|
|
65
|
-
embedded: this.embedded,
|
|
66
|
-
};
|
|
67
|
-
// Batch ACK settings
|
|
68
|
-
this.ackBatchSize = opts.batchSize ?? 10; // ACK when this many complete
|
|
69
|
-
this.ackInterval = 50; // Or after 50ms, whichever comes first
|
|
70
|
-
if (this.embedded) {
|
|
71
|
-
this.tcp = null;
|
|
72
|
-
this.tcpPool = null;
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
const connOpts = opts.connection ?? {};
|
|
76
|
-
// Always use pool - default poolSize = min(concurrency, 8), user can override
|
|
77
|
-
const poolSize = connOpts.poolSize ?? Math.min(concurrency, 8);
|
|
78
|
-
// Use connection pool (always enabled for TCP mode)
|
|
79
|
-
this.tcpPool = new TcpConnectionPool({
|
|
80
|
-
host: connOpts.host ?? 'localhost',
|
|
81
|
-
port: connOpts.port ?? 6789,
|
|
82
|
-
token: connOpts.token,
|
|
83
|
-
poolSize,
|
|
84
|
-
});
|
|
85
|
-
this.tcp = this.tcpPool;
|
|
86
|
-
}
|
|
87
|
-
if (this.opts.autorun) {
|
|
88
|
-
this.run();
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/** Start processing */
|
|
92
|
-
run() {
|
|
93
|
-
if (this.running)
|
|
94
|
-
return;
|
|
95
|
-
this.running = true;
|
|
96
|
-
this.emit('ready');
|
|
97
|
-
// Start global heartbeat timer for TCP mode
|
|
98
|
-
if (!this.embedded && this.opts.heartbeatInterval > 0) {
|
|
99
|
-
this.startGlobalHeartbeat();
|
|
100
|
-
}
|
|
101
|
-
this.poll();
|
|
102
|
-
}
|
|
103
|
-
/** Pause processing */
|
|
104
|
-
pause() {
|
|
105
|
-
this.running = false;
|
|
106
|
-
if (this.pollTimer) {
|
|
107
|
-
clearTimeout(this.pollTimer);
|
|
108
|
-
this.pollTimer = null;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/** Resume processing */
|
|
112
|
-
resume() {
|
|
113
|
-
this.run();
|
|
114
|
-
}
|
|
115
|
-
/** Close worker gracefully */
|
|
116
|
-
async close(force = false) {
|
|
117
|
-
this.running = false;
|
|
118
|
-
if (this.pollTimer) {
|
|
119
|
-
clearTimeout(this.pollTimer);
|
|
120
|
-
this.pollTimer = null;
|
|
121
|
-
}
|
|
122
|
-
// Stop global heartbeat timer
|
|
123
|
-
if (this.heartbeatTimer) {
|
|
124
|
-
clearInterval(this.heartbeatTimer);
|
|
125
|
-
this.heartbeatTimer = null;
|
|
126
|
-
}
|
|
127
|
-
// Flush pending ACKs
|
|
128
|
-
await this.flushAcks();
|
|
129
|
-
// Stop ACK timer
|
|
130
|
-
if (this.ackTimer) {
|
|
131
|
-
clearTimeout(this.ackTimer);
|
|
132
|
-
this.ackTimer = null;
|
|
133
|
-
}
|
|
134
|
-
if (!force) {
|
|
135
|
-
while (this.activeJobs > 0) {
|
|
136
|
-
await new Promise((r) => setTimeout(r, 50));
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
// Close pool if using pooled connections (not shared)
|
|
140
|
-
if (this.tcpPool) {
|
|
141
|
-
this.tcpPool.close();
|
|
142
|
-
}
|
|
143
|
-
this.emit('closed');
|
|
144
|
-
}
|
|
145
|
-
/** Start global heartbeat timer for all active jobs (TCP mode) */
|
|
146
|
-
startGlobalHeartbeat() {
|
|
147
|
-
this.heartbeatTimer = setInterval(() => {
|
|
148
|
-
void this.sendBatchHeartbeat();
|
|
149
|
-
}, this.opts.heartbeatInterval);
|
|
150
|
-
}
|
|
151
|
-
/** Send batch heartbeat for all active jobs */
|
|
152
|
-
async sendBatchHeartbeat() {
|
|
153
|
-
if (this.activeJobIds.size === 0 || !this.tcp)
|
|
154
|
-
return;
|
|
155
|
-
try {
|
|
156
|
-
// Rebuild cache only when dirty (avoids Array.from on every heartbeat)
|
|
157
|
-
if (this.activeJobIdsDirty) {
|
|
158
|
-
this.cachedActiveJobIds = Array.from(this.activeJobIds);
|
|
159
|
-
this.activeJobIdsDirty = false;
|
|
160
|
-
}
|
|
161
|
-
const ids = this.cachedActiveJobIds;
|
|
162
|
-
if (ids.length === 1) {
|
|
163
|
-
await this.tcp.send({ cmd: 'JobHeartbeat', id: ids[0] });
|
|
164
|
-
}
|
|
165
|
-
else if (ids.length > 1) {
|
|
166
|
-
await this.tcp.send({ cmd: 'JobHeartbeatB', ids });
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
catch (err) {
|
|
170
|
-
// Heartbeat errors are non-fatal, just emit for logging
|
|
171
|
-
const error = err instanceof Error ? err : new Error(String(err));
|
|
172
|
-
this.emit('error', Object.assign(error, { context: 'heartbeat' }));
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
poll() {
|
|
176
|
-
if (!this.running)
|
|
177
|
-
return;
|
|
178
|
-
if (this.activeJobs >= this.opts.concurrency) {
|
|
179
|
-
this.pollTimer = setTimeout(() => {
|
|
180
|
-
this.poll();
|
|
181
|
-
}, 10);
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
|
-
void this.tryProcess();
|
|
185
|
-
}
|
|
186
|
-
async tryProcess() {
|
|
187
|
-
if (!this.running)
|
|
188
|
-
return;
|
|
189
|
-
try {
|
|
190
|
-
// Get job from pending buffer (O(1) with index) or fetch new batch
|
|
191
|
-
let job = null;
|
|
192
|
-
if (this.pendingJobsHead < this.pendingJobs.length) {
|
|
193
|
-
job = this.pendingJobs[this.pendingJobsHead++];
|
|
194
|
-
// Compact array when we've consumed half to prevent memory growth
|
|
195
|
-
if (this.pendingJobsHead > 500 && this.pendingJobsHead >= this.pendingJobs.length / 2) {
|
|
196
|
-
this.pendingJobs = this.pendingJobs.slice(this.pendingJobsHead);
|
|
197
|
-
this.pendingJobsHead = 0;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
if (!job) {
|
|
201
|
-
// Fetch new batch - calculate how many we can process
|
|
202
|
-
const availableSlots = this.opts.concurrency - this.activeJobs;
|
|
203
|
-
const batchSize = Math.min(this.opts.batchSize, availableSlots, 1000);
|
|
204
|
-
if (batchSize > 0) {
|
|
205
|
-
const jobs = this.embedded
|
|
206
|
-
? await this.pullBatchEmbedded(batchSize)
|
|
207
|
-
: await this.pullBatchTcp(batchSize);
|
|
208
|
-
// Take first job, buffer the rest (reset queue)
|
|
209
|
-
if (jobs.length > 0) {
|
|
210
|
-
job = jobs[0];
|
|
211
|
-
this.pendingJobs = jobs;
|
|
212
|
-
this.pendingJobsHead = 1;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
if (job) {
|
|
217
|
-
// Reset error count only when we successfully got a job
|
|
218
|
-
this.consecutiveErrors = 0;
|
|
219
|
-
this.activeJobs++;
|
|
220
|
-
const jobIdStr = String(job.id);
|
|
221
|
-
this.activeJobIds.add(jobIdStr);
|
|
222
|
-
this.activeJobIdsDirty = true;
|
|
223
|
-
void this.processJob(job).finally(() => {
|
|
224
|
-
this.activeJobs--;
|
|
225
|
-
this.activeJobIds.delete(jobIdStr);
|
|
226
|
-
this.activeJobIdsDirty = true;
|
|
227
|
-
if (this.running)
|
|
228
|
-
this.poll();
|
|
229
|
-
});
|
|
230
|
-
// Process more jobs if we have capacity
|
|
231
|
-
if (this.activeJobs < this.opts.concurrency) {
|
|
232
|
-
setImmediate(() => {
|
|
233
|
-
void this.tryProcess();
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
// No jobs available, wait before polling again
|
|
239
|
-
// Use longer wait if long polling is enabled and server didn't block
|
|
240
|
-
const waitTime = this.opts.pollTimeout > 0 ? 10 : 50;
|
|
241
|
-
this.pollTimer = setTimeout(() => {
|
|
242
|
-
this.poll();
|
|
243
|
-
}, waitTime);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
catch (err) {
|
|
247
|
-
this.consecutiveErrors++;
|
|
248
|
-
// Emit error with context
|
|
249
|
-
const error = err instanceof Error ? err : new Error(String(err));
|
|
250
|
-
const wrappedError = Object.assign(error, {
|
|
251
|
-
queue: this.name,
|
|
252
|
-
consecutiveErrors: this.consecutiveErrors,
|
|
253
|
-
context: 'pull',
|
|
254
|
-
});
|
|
255
|
-
this.emit('error', wrappedError);
|
|
256
|
-
// Exponential backoff: 100ms, 200ms, 400ms, ... up to 30s
|
|
257
|
-
const backoffMs = Math.min(Worker.BASE_BACKOFF_MS * Math.pow(2, this.consecutiveErrors - 1), Worker.MAX_BACKOFF_MS);
|
|
258
|
-
this.pollTimer = setTimeout(() => {
|
|
259
|
-
this.poll();
|
|
260
|
-
}, backoffMs);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
/** Pull batch (embedded) */
|
|
264
|
-
async pullBatchEmbedded(count) {
|
|
265
|
-
const manager = getSharedManager();
|
|
266
|
-
if (count === 1) {
|
|
267
|
-
const job = await manager.pull(this.name, 0);
|
|
268
|
-
return job ? [job] : [];
|
|
269
|
-
}
|
|
270
|
-
return manager.pullBatch(this.name, count, 0);
|
|
271
|
-
}
|
|
272
|
-
/** Pull batch of jobs via TCP with optional long polling */
|
|
273
|
-
async pullBatchTcp(count) {
|
|
274
|
-
if (!this.tcp)
|
|
275
|
-
return [];
|
|
276
|
-
const response = await this.tcp.send({
|
|
277
|
-
cmd: count === 1 ? 'PULL' : 'PULLB',
|
|
278
|
-
queue: this.name,
|
|
279
|
-
timeout: this.opts.pollTimeout, // Long polling support
|
|
280
|
-
count, // For PULLB
|
|
281
|
-
});
|
|
282
|
-
if (!response.ok)
|
|
283
|
-
return [];
|
|
284
|
-
// Handle single job response (PULL)
|
|
285
|
-
if (count === 1 && response.job) {
|
|
286
|
-
return [this.parseJob(response.job)];
|
|
287
|
-
}
|
|
288
|
-
// Handle batch response (PULLB)
|
|
289
|
-
const jobs = response.jobs;
|
|
290
|
-
if (!jobs || jobs.length === 0)
|
|
291
|
-
return [];
|
|
292
|
-
return jobs.map((j) => this.parseJob(j));
|
|
293
|
-
}
|
|
294
|
-
/** Parse job from TCP response */
|
|
295
|
-
parseJob(jobData) {
|
|
296
|
-
const priority = jobData.priority;
|
|
297
|
-
const createdAt = jobData.createdAt;
|
|
298
|
-
const runAt = jobData.runAt;
|
|
299
|
-
const attempts = jobData.attempts;
|
|
300
|
-
const maxAttempts = jobData.maxAttempts;
|
|
301
|
-
const backoff = jobData.backoff;
|
|
302
|
-
const ttl = jobData.ttl;
|
|
303
|
-
const timeout = jobData.timeout;
|
|
304
|
-
const uniqueKey = jobData.uniqueKey;
|
|
305
|
-
const customId = jobData.customId;
|
|
306
|
-
const progress = jobData.progress;
|
|
307
|
-
const progressMessage = jobData.progressMessage;
|
|
308
|
-
const removeOnComplete = jobData.removeOnComplete;
|
|
309
|
-
return {
|
|
310
|
-
id: jobId(jobData.id),
|
|
311
|
-
queue: this.name,
|
|
312
|
-
data: jobData.data,
|
|
313
|
-
priority: priority ?? 0,
|
|
314
|
-
createdAt: createdAt ?? Date.now(),
|
|
315
|
-
runAt: runAt ?? Date.now(),
|
|
316
|
-
startedAt: Date.now(),
|
|
317
|
-
completedAt: null,
|
|
318
|
-
attempts: attempts ?? 0,
|
|
319
|
-
maxAttempts: maxAttempts ?? 3,
|
|
320
|
-
backoff: backoff ?? 1000,
|
|
321
|
-
ttl: ttl ?? null,
|
|
322
|
-
timeout: timeout ?? null,
|
|
323
|
-
uniqueKey: uniqueKey ?? null,
|
|
324
|
-
customId: customId ?? null,
|
|
325
|
-
progress: progress ?? 0,
|
|
326
|
-
progressMessage: progressMessage ?? null,
|
|
327
|
-
dependsOn: [],
|
|
328
|
-
parentId: null,
|
|
329
|
-
childrenIds: [],
|
|
330
|
-
childrenCompleted: 0,
|
|
331
|
-
tags: [],
|
|
332
|
-
groupId: null,
|
|
333
|
-
lifo: false,
|
|
334
|
-
removeOnComplete: removeOnComplete ?? false,
|
|
335
|
-
removeOnFail: false,
|
|
336
|
-
stallCount: 0,
|
|
337
|
-
stallTimeout: null,
|
|
338
|
-
lastHeartbeat: Date.now(),
|
|
339
|
-
repeat: null,
|
|
340
|
-
};
|
|
341
|
-
}
|
|
342
|
-
/** Queue ACK for batch processing with result */
|
|
343
|
-
queueAck(id, result) {
|
|
344
|
-
this.pendingAcks.push({
|
|
345
|
-
id,
|
|
346
|
-
result,
|
|
347
|
-
resolve: () => { },
|
|
348
|
-
reject: () => { },
|
|
349
|
-
});
|
|
350
|
-
// Flush if batch is full
|
|
351
|
-
if (this.pendingAcks.length >= this.ackBatchSize) {
|
|
352
|
-
void this.flushAcks();
|
|
353
|
-
}
|
|
354
|
-
else {
|
|
355
|
-
// Start timer for partial batch (if not already running)
|
|
356
|
-
this.ackTimer ??= setTimeout(() => {
|
|
357
|
-
this.ackTimer = null;
|
|
358
|
-
void this.flushAcks();
|
|
359
|
-
}, this.ackInterval);
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
/** Flush pending ACKs in batch with results */
|
|
363
|
-
async flushAcks() {
|
|
364
|
-
if (this.pendingAcks.length === 0)
|
|
365
|
-
return;
|
|
366
|
-
const batch = this.pendingAcks.splice(0, this.pendingAcks.length);
|
|
367
|
-
if (this.ackTimer) {
|
|
368
|
-
clearTimeout(this.ackTimer);
|
|
369
|
-
this.ackTimer = null;
|
|
370
|
-
}
|
|
371
|
-
try {
|
|
372
|
-
if (this.embedded) {
|
|
373
|
-
// Embedded: batch ack with results
|
|
374
|
-
const manager = getSharedManager();
|
|
375
|
-
const items = batch.map((a) => ({ id: jobId(a.id), result: a.result }));
|
|
376
|
-
await manager.ackBatchWithResults(items);
|
|
377
|
-
}
|
|
378
|
-
else if (this.tcp) {
|
|
379
|
-
// TCP: use ACKB command with results
|
|
380
|
-
const response = await this.tcp.send({
|
|
381
|
-
cmd: 'ACKB',
|
|
382
|
-
ids: batch.map((a) => a.id),
|
|
383
|
-
results: batch.map((a) => a.result), // Include results
|
|
384
|
-
});
|
|
385
|
-
if (!response.ok) {
|
|
386
|
-
const errMsg = response.error;
|
|
387
|
-
throw new Error(errMsg ?? 'Batch ACK failed');
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
// Resolve all promises
|
|
391
|
-
for (const ack of batch) {
|
|
392
|
-
ack.resolve();
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
catch (err) {
|
|
396
|
-
// Reject all promises
|
|
397
|
-
const error = err instanceof Error ? err : new Error(String(err));
|
|
398
|
-
for (const ack of batch) {
|
|
399
|
-
ack.reject(error);
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
async processJob(internalJob) {
|
|
404
|
-
const jobData = internalJob.data;
|
|
405
|
-
const name = jobData?.name ?? 'default';
|
|
406
|
-
const jobIdStr = String(internalJob.id);
|
|
407
|
-
// Create job with progress and log methods
|
|
408
|
-
const job = createPublicJob(internalJob, name, async (id, progress, message) => {
|
|
409
|
-
if (this.embedded) {
|
|
410
|
-
const manager = getSharedManager();
|
|
411
|
-
await manager.updateProgress(jobId(id), progress, message);
|
|
412
|
-
}
|
|
413
|
-
else if (this.tcp) {
|
|
414
|
-
await this.tcp.send({
|
|
415
|
-
cmd: 'Progress',
|
|
416
|
-
id,
|
|
417
|
-
progress,
|
|
418
|
-
message,
|
|
419
|
-
});
|
|
420
|
-
}
|
|
421
|
-
this.emit('progress', job, progress);
|
|
422
|
-
}, async (id, message) => {
|
|
423
|
-
if (this.embedded) {
|
|
424
|
-
const manager = getSharedManager();
|
|
425
|
-
manager.addLog(jobId(id), message);
|
|
426
|
-
}
|
|
427
|
-
else if (this.tcp) {
|
|
428
|
-
await this.tcp.send({
|
|
429
|
-
cmd: 'AddLog',
|
|
430
|
-
id,
|
|
431
|
-
message,
|
|
432
|
-
});
|
|
433
|
-
}
|
|
434
|
-
});
|
|
435
|
-
this.emit('active', job);
|
|
436
|
-
try {
|
|
437
|
-
const result = await this.processor(job);
|
|
438
|
-
// Use batch ACK for both modes
|
|
439
|
-
if (this.embedded) {
|
|
440
|
-
const manager = getSharedManager();
|
|
441
|
-
await manager.ack(internalJob.id, result);
|
|
442
|
-
}
|
|
443
|
-
else {
|
|
444
|
-
// Queue for batch ACK with result
|
|
445
|
-
this.queueAck(jobIdStr, result);
|
|
446
|
-
}
|
|
447
|
-
job.returnvalue = result;
|
|
448
|
-
this.emit('completed', job, result);
|
|
449
|
-
}
|
|
450
|
-
catch (error) {
|
|
451
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
452
|
-
// Try to fail the job (not batched - failures are less common)
|
|
453
|
-
try {
|
|
454
|
-
if (this.embedded) {
|
|
455
|
-
const manager = getSharedManager();
|
|
456
|
-
await manager.fail(internalJob.id, err.message);
|
|
457
|
-
}
|
|
458
|
-
else if (this.tcp) {
|
|
459
|
-
await this.tcp.send({
|
|
460
|
-
cmd: 'FAIL',
|
|
461
|
-
id: internalJob.id,
|
|
462
|
-
error: err.message,
|
|
463
|
-
});
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
catch (failError) {
|
|
467
|
-
const wrappedError = failError instanceof Error ? failError : new Error(String(failError));
|
|
468
|
-
this.emit('error', Object.assign(wrappedError, { context: 'fail', jobId: jobIdStr }));
|
|
469
|
-
}
|
|
470
|
-
job.failedReason = err.message;
|
|
471
|
-
this.emit('failed', job, err);
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
}
|
|
5
|
+
export { Worker } from './worker/worker';
|
|
475
6
|
//# sourceMappingURL=worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/client/worker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/client/worker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -161,6 +161,14 @@ export declare class Shard {
|
|
|
161
161
|
getQueueNames(): string[];
|
|
162
162
|
/** Get shard statistics - O(1) */
|
|
163
163
|
getStats(): ShardStats;
|
|
164
|
+
/** Get internal structure sizes for memory debugging */
|
|
165
|
+
getInternalSizes(): {
|
|
166
|
+
delayedJobIds: number;
|
|
167
|
+
delayedHeap: number;
|
|
168
|
+
delayedRunAt: number;
|
|
169
|
+
temporalIndex: number;
|
|
170
|
+
waiters: number;
|
|
171
|
+
};
|
|
164
172
|
/** Increment queued jobs counter and add to temporal index */
|
|
165
173
|
incrementQueued(jobId: JobId, isDelayed: boolean, createdAt?: number, queue?: string, runAt?: number): void;
|
|
166
174
|
/** Decrement queued jobs counter and remove from temporal index */
|
|
@@ -198,8 +206,17 @@ export declare class Shard {
|
|
|
198
206
|
removeFromTemporalIndex(jobId: JobId): void;
|
|
199
207
|
/** Clear temporal index for a queue */
|
|
200
208
|
clearTemporalIndexForQueue(queue: string): void;
|
|
201
|
-
/**
|
|
202
|
-
|
|
209
|
+
/**
|
|
210
|
+
* Clean orphaned temporal index entries.
|
|
211
|
+
* Removes entries for jobs that no longer exist in the queue.
|
|
212
|
+
* Call periodically to prevent memory leaks.
|
|
213
|
+
*/
|
|
214
|
+
cleanOrphanedTemporalEntries(): number;
|
|
215
|
+
/** Drain all waiting jobs from queue, returns drained job IDs for cleanup */
|
|
216
|
+
drain(queue: string): {
|
|
217
|
+
count: number;
|
|
218
|
+
jobIds: JobId[];
|
|
219
|
+
};
|
|
203
220
|
/** Obliterate queue completely */
|
|
204
221
|
obliterate(queue: string): void;
|
|
205
222
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shard.d.ts","sourceRoot":"","sources":["../../../src/domain/queue/shard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,KAAK,UAAU,EAAoB,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpG,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAEL,aAAa,EAId,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAIvD,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACzB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,qBAAa,KAAK;IAChB,oCAAoC;IACpC,QAAQ,CAAC,MAAM,oCAA2C;IAE1D,+DAA+D;IAC/D,QAAQ,CAAC,GAAG,0BAAiC;IAE7C,kCAAkC;IAClC,QAAQ,CAAC,SAAS,yBAAgC;IAElD,oCAAoC;IACpC,QAAQ,CAAC,WAAW,2BAAkC;IAEtD,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAIpB;IAEF,iEAAiE;IACjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAElD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAE1B;IAEF,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IAEzD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAE5B;IAEF,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,2BAAkC;IAErD,oCAAoC;IACpC,QAAQ,CAAC,WAAW,kBAAyB;IAE7C;;;OAGG;IACH,QAAQ,CAAC,eAAe,yBAAgC;IAExD,mDAAmD;IACnD,QAAQ,CAAC,eAAe,kBAAyB;IAEjD,mDAAmD;IACnD,QAAQ,CAAC,UAAU,0BAAiC;IAEpD,mCAAmC;IACnC,QAAQ,CAAC,YAAY,2BAAkC;IAEvD,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,2BAAkC;IAEvD,qCAAqC;IACrC,QAAQ,CAAC,mBAAmB,kCAAyC;IAErE,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0D;IAElF,wEAAwE;IACxE,MAAM,IAAI,IAAI;IAWd,wDAAwD;IACxD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB5C,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;IAS5C,sBAAsB;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IASlC,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B,kBAAkB;IAClB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIzB,mBAAmB;IACnB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO1B,uCAAuC;IACvC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAItD,0BAA0B;IAC1B,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IASnD,yBAAyB;IACzB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAMlD,oCAAoC;IACpC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAItD,gCAAgC;IAChC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IASnD,yBAAyB;IACzB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAMlD,+BAA+B;IAC/B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhD,uBAAuB;IACvB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMnC,sCAAsC;IACtC,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAK3C,sCAAsC;IACtC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAWlD,8BAA8B;IAC9B,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMrC,sCAAsC;IACtC,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAK7C,+BAA+B;IAC/B,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMvC,sCAAsC;IACtC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAY1F;;;OAGG;IACH,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI;IAW5D;;;OAGG;IACH,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI;IAY9D;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS;IAMvD,+BAA+B;IAC/B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAItC,+BAA+B;IAC/B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;IAK7D,iCAAiC;IACjC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAI1C,iCAAiC;IACjC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAKjE,wCAAwC;IACxC,QAAQ,CACN,GAAG,EAAE,GAAG,EACR,MAAM,GAAE,aAAqC,EAC7C,KAAK,GAAE,MAAM,GAAG,IAAW,GAC1B,QAAQ;IAqBX,4BAA4B;IAC5B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE;IAIxC,gDAAgD;IAChD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE;IAO5C,kCAAkC;IAClC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE;IAwB5D,sCAAsC;IACtC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI;IAS3D,uCAAuC;IACvC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,QAAQ,EAAE;IAOxE,sCAAsC;IACtC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,QAAQ,EAAE;IAMtE,6BAA6B;IAC7B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM;IAgB7D,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAW/B,sCAAsC;IACtC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAItC,8BAA8B;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIlC,wCAAwC;IACxC,aAAa,IAAI,MAAM,EAAE;IAUzB,kCAAkC;IAClC,QAAQ,IAAI,UAAU;IAItB,8DAA8D;IAC9D,eAAe,CACb,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,IAAI;IAkBP,mEAAmE;IACnE,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAWnC,4BAA4B;IAC5B,YAAY,IAAI,IAAI;IAIpB,4BAA4B;IAC5B,YAAY,CAAC,KAAK,GAAE,MAAU,GAAG,IAAI;IAIrC;;;OAGG;IACH,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IA2BtC,uDAAuD;IACvD,mBAAmB,IAAI,IAAI;IAQ3B,wBAAwB;IACxB,eAAe,IAAI,IAAI;IAMvB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;;OAGG;IACH,UAAU,CACR,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAkB7C;;;OAGG;IACH,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI3C,uCAAuC;IACvC,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/C,
|
|
1
|
+
{"version":3,"file":"shard.d.ts","sourceRoot":"","sources":["../../../src/domain/queue/shard.ts"],"names":[],"mappings":"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"}
|
|
@@ -410,6 +410,16 @@ export class Shard {
|
|
|
410
410
|
getStats() {
|
|
411
411
|
return { ...this.stats };
|
|
412
412
|
}
|
|
413
|
+
/** Get internal structure sizes for memory debugging */
|
|
414
|
+
getInternalSizes() {
|
|
415
|
+
return {
|
|
416
|
+
delayedJobIds: this.delayedJobIds.size,
|
|
417
|
+
delayedHeap: this.delayedHeap.size,
|
|
418
|
+
delayedRunAt: this.delayedRunAt.size,
|
|
419
|
+
temporalIndex: this.temporalIndex.size,
|
|
420
|
+
waiters: this.waiters.length,
|
|
421
|
+
};
|
|
422
|
+
}
|
|
413
423
|
/** Increment queued jobs counter and add to temporal index */
|
|
414
424
|
incrementQueued(jobId, isDelayed, createdAt, queue, runAt) {
|
|
415
425
|
this.stats.queuedJobs++;
|
|
@@ -528,14 +538,36 @@ export class Shard {
|
|
|
528
538
|
// Remove all entries for this queue
|
|
529
539
|
this.temporalIndex.removeAll((e) => e.queue === queue);
|
|
530
540
|
}
|
|
531
|
-
/**
|
|
541
|
+
/**
|
|
542
|
+
* Clean orphaned temporal index entries.
|
|
543
|
+
* Removes entries for jobs that no longer exist in the queue.
|
|
544
|
+
* Call periodically to prevent memory leaks.
|
|
545
|
+
*/
|
|
546
|
+
cleanOrphanedTemporalEntries() {
|
|
547
|
+
if (this.temporalIndex.size === 0)
|
|
548
|
+
return 0;
|
|
549
|
+
// Build a set of valid job IDs from all queues
|
|
550
|
+
const validJobIds = new Set();
|
|
551
|
+
for (const queue of this.queues.values()) {
|
|
552
|
+
for (const job of queue.values()) {
|
|
553
|
+
validJobIds.add(job.id);
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
// Remove entries that are not in any queue
|
|
557
|
+
const beforeSize = this.temporalIndex.size;
|
|
558
|
+
this.temporalIndex.removeAll((e) => !validJobIds.has(e.jobId));
|
|
559
|
+
return beforeSize - this.temporalIndex.size;
|
|
560
|
+
}
|
|
561
|
+
/** Drain all waiting jobs from queue, returns drained job IDs for cleanup */
|
|
532
562
|
drain(queue) {
|
|
533
563
|
const q = this.queues.get(queue);
|
|
534
564
|
if (!q)
|
|
535
|
-
return 0;
|
|
565
|
+
return { count: 0, jobIds: [] };
|
|
536
566
|
const count = q.size;
|
|
537
|
-
|
|
567
|
+
const jobIds = [];
|
|
568
|
+
// Collect job IDs and remove delayed job tracking
|
|
538
569
|
for (const job of q.values()) {
|
|
570
|
+
jobIds.push(job.id);
|
|
539
571
|
this.delayedJobIds.delete(job.id);
|
|
540
572
|
}
|
|
541
573
|
q.clear();
|
|
@@ -544,7 +576,7 @@ export class Shard {
|
|
|
544
576
|
// Update counters
|
|
545
577
|
this.stats.queuedJobs = Math.max(0, this.stats.queuedJobs - count);
|
|
546
578
|
this.stats.delayedJobs = Math.max(0, this.stats.delayedJobs);
|
|
547
|
-
return count;
|
|
579
|
+
return { count, jobIds };
|
|
548
580
|
}
|
|
549
581
|
/** Obliterate queue completely */
|
|
550
582
|
obliterate(queue) {
|