@rudderjs/horizon 4.1.0 → 6.0.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/README.md +3 -2
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +11 -5
- package/dist/api/routes.js.map +1 -1
- package/dist/collectors/job.d.ts +15 -3
- package/dist/collectors/job.d.ts.map +1 -1
- package/dist/collectors/job.js +68 -69
- package/dist/collectors/job.js.map +1 -1
- package/dist/collectors/worker.d.ts.map +1 -1
- package/dist/collectors/worker.js +6 -0
- package/dist/collectors/worker.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -6
- package/dist/index.js.map +1 -1
- package/dist/routes.js +3 -3
- package/dist/routes.js.map +1 -1
- package/dist/storage.d.ts +47 -7
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +391 -25
- package/dist/storage.js.map +1 -1
- package/dist/types.d.ts +23 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/views/vanilla/_jobTable.d.ts.map +1 -1
- package/dist/views/vanilla/_jobTable.js +9 -7
- package/dist/views/vanilla/_jobTable.js.map +1 -1
- package/package.json +6 -4
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EACnD,cAAc,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/storage.js
CHANGED
|
@@ -15,8 +15,8 @@ export class MemoryStorage {
|
|
|
15
15
|
this.jobs.length = this.maxJobs;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
updateJob(id, updates) {
|
|
19
|
-
const job = this.jobs.find(j => j.id === id);
|
|
18
|
+
updateJob(queue, id, updates) {
|
|
19
|
+
const job = this.jobs.find(j => j.queue === queue && j.id === id);
|
|
20
20
|
if (job)
|
|
21
21
|
Object.assign(job, updates);
|
|
22
22
|
}
|
|
@@ -26,8 +26,8 @@ export class MemoryStorage {
|
|
|
26
26
|
failedJobs(options) {
|
|
27
27
|
return this.filterJobs({ ...options, status: 'failed' });
|
|
28
28
|
}
|
|
29
|
-
findJob(id) {
|
|
30
|
-
return this.jobs.find(j => j.id === id) ?? null;
|
|
29
|
+
findJob(queue, id) {
|
|
30
|
+
return this.jobs.find(j => j.queue === queue && j.id === id) ?? null;
|
|
31
31
|
}
|
|
32
32
|
recordMetric(metric) {
|
|
33
33
|
this.latestMetrics.set(metric.queue, metric);
|
|
@@ -54,8 +54,8 @@ export class MemoryStorage {
|
|
|
54
54
|
workers() {
|
|
55
55
|
return [...this.workerMap.values()];
|
|
56
56
|
}
|
|
57
|
-
deleteJob(id) {
|
|
58
|
-
const idx = this.jobs.findIndex(j => j.id === id);
|
|
57
|
+
deleteJob(queue, id) {
|
|
58
|
+
const idx = this.jobs.findIndex(j => j.queue === queue && j.id === id);
|
|
59
59
|
if (idx !== -1)
|
|
60
60
|
this.jobs.splice(idx, 1);
|
|
61
61
|
}
|
|
@@ -112,11 +112,14 @@ export class SqliteStorage {
|
|
|
112
112
|
return this.db;
|
|
113
113
|
}
|
|
114
114
|
migrate() {
|
|
115
|
+
// v2 table: composite PK so cross-queue id collisions (BullMQ assigns ids
|
|
116
|
+
// per-queue) don't clobber records. v1's `horizon_jobs` (single-column id
|
|
117
|
+
// PK) is left untouched on upgrade — pruneAfterHours ages it out.
|
|
115
118
|
this.db.exec(`
|
|
116
|
-
CREATE TABLE IF NOT EXISTS
|
|
117
|
-
id TEXT PRIMARY KEY,
|
|
118
|
-
name TEXT NOT NULL,
|
|
119
|
+
CREATE TABLE IF NOT EXISTS horizon_jobs_v2 (
|
|
119
120
|
queue TEXT NOT NULL,
|
|
121
|
+
id TEXT NOT NULL,
|
|
122
|
+
name TEXT NOT NULL,
|
|
120
123
|
status TEXT NOT NULL,
|
|
121
124
|
payload TEXT NOT NULL DEFAULT '{}',
|
|
122
125
|
attempts INTEGER NOT NULL DEFAULT 0,
|
|
@@ -125,10 +128,11 @@ export class SqliteStorage {
|
|
|
125
128
|
started_at TEXT,
|
|
126
129
|
completed_at TEXT,
|
|
127
130
|
duration INTEGER,
|
|
128
|
-
tags TEXT NOT NULL DEFAULT '[]'
|
|
131
|
+
tags TEXT NOT NULL DEFAULT '[]',
|
|
132
|
+
PRIMARY KEY (queue, id)
|
|
129
133
|
);
|
|
130
|
-
CREATE INDEX IF NOT EXISTS idx_horizon_status ON
|
|
131
|
-
CREATE INDEX IF NOT EXISTS idx_horizon_queue ON
|
|
134
|
+
CREATE INDEX IF NOT EXISTS idx_horizon_status ON horizon_jobs_v2(status, dispatched_at);
|
|
135
|
+
CREATE INDEX IF NOT EXISTS idx_horizon_queue ON horizon_jobs_v2(queue, dispatched_at);
|
|
132
136
|
|
|
133
137
|
CREATE TABLE IF NOT EXISTS horizon_metrics (
|
|
134
138
|
id TEXT PRIMARY KEY,
|
|
@@ -156,10 +160,10 @@ export class SqliteStorage {
|
|
|
156
160
|
`);
|
|
157
161
|
}
|
|
158
162
|
recordJob(job) {
|
|
159
|
-
this.getDb().prepare(`INSERT INTO
|
|
160
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(job.
|
|
163
|
+
this.getDb().prepare(`INSERT OR REPLACE INTO horizon_jobs_v2 (queue, id, name, status, payload, attempts, exception, dispatched_at, started_at, completed_at, duration, tags)
|
|
164
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(job.queue, job.id, job.name, job.status, JSON.stringify(job.payload), job.attempts, job.exception, job.dispatchedAt.toISOString(), job.startedAt?.toISOString() ?? null, job.completedAt?.toISOString() ?? null, job.duration, JSON.stringify(job.tags));
|
|
161
165
|
}
|
|
162
|
-
updateJob(id, updates) {
|
|
166
|
+
updateJob(queue, id, updates) {
|
|
163
167
|
const sets = [];
|
|
164
168
|
const params = [];
|
|
165
169
|
if (updates.status !== undefined) {
|
|
@@ -188,8 +192,8 @@ export class SqliteStorage {
|
|
|
188
192
|
}
|
|
189
193
|
if (sets.length === 0)
|
|
190
194
|
return;
|
|
191
|
-
params.push(id);
|
|
192
|
-
this.getDb().prepare(`UPDATE
|
|
195
|
+
params.push(queue, id);
|
|
196
|
+
this.getDb().prepare(`UPDATE horizon_jobs_v2 SET ${sets.join(', ')} WHERE queue = ? AND id = ?`).run(...params);
|
|
193
197
|
}
|
|
194
198
|
recentJobs(options) {
|
|
195
199
|
return this.queryJobs(options);
|
|
@@ -197,8 +201,8 @@ export class SqliteStorage {
|
|
|
197
201
|
failedJobs(options) {
|
|
198
202
|
return this.queryJobs({ ...options, status: 'failed' });
|
|
199
203
|
}
|
|
200
|
-
findJob(id) {
|
|
201
|
-
const row = this.getDb().prepare('SELECT * FROM
|
|
204
|
+
findJob(queue, id) {
|
|
205
|
+
const row = this.getDb().prepare('SELECT * FROM horizon_jobs_v2 WHERE queue = ? AND id = ?').get(queue, id);
|
|
202
206
|
return row ? this.jobFromRow(row) : null;
|
|
203
207
|
}
|
|
204
208
|
recordMetric(metric) {
|
|
@@ -231,21 +235,21 @@ export class SqliteStorage {
|
|
|
231
235
|
lastJobAt: r['last_job_at'] ? new Date(r['last_job_at']) : null,
|
|
232
236
|
}));
|
|
233
237
|
}
|
|
234
|
-
deleteJob(id) {
|
|
235
|
-
this.getDb().prepare('DELETE FROM
|
|
238
|
+
deleteJob(queue, id) {
|
|
239
|
+
this.getDb().prepare('DELETE FROM horizon_jobs_v2 WHERE queue = ? AND id = ?').run(queue, id);
|
|
236
240
|
}
|
|
237
241
|
pruneOlderThan(date) {
|
|
238
242
|
const iso = date.toISOString();
|
|
239
243
|
const db = this.getDb();
|
|
240
|
-
db.prepare('DELETE FROM
|
|
244
|
+
db.prepare('DELETE FROM horizon_jobs_v2 WHERE dispatched_at < ?').run(iso);
|
|
241
245
|
db.prepare('DELETE FROM horizon_metrics WHERE created_at < ?').run(iso);
|
|
242
246
|
}
|
|
243
247
|
jobCount(status) {
|
|
244
248
|
if (status) {
|
|
245
|
-
const row = this.getDb().prepare('SELECT COUNT(*) as cnt FROM
|
|
249
|
+
const row = this.getDb().prepare('SELECT COUNT(*) as cnt FROM horizon_jobs_v2 WHERE status = ?').get(status);
|
|
246
250
|
return row.cnt;
|
|
247
251
|
}
|
|
248
|
-
const row = this.getDb().prepare('SELECT COUNT(*) as cnt FROM
|
|
252
|
+
const row = this.getDb().prepare('SELECT COUNT(*) as cnt FROM horizon_jobs_v2').get();
|
|
249
253
|
return row.cnt;
|
|
250
254
|
}
|
|
251
255
|
queryJobs(options) {
|
|
@@ -268,7 +272,7 @@ export class SqliteStorage {
|
|
|
268
272
|
const perPage = options?.perPage ?? 50;
|
|
269
273
|
const offset = (page - 1) * perPage;
|
|
270
274
|
params.push(perPage, offset);
|
|
271
|
-
const rows = this.getDb().prepare(`SELECT * FROM
|
|
275
|
+
const rows = this.getDb().prepare(`SELECT * FROM horizon_jobs_v2 ${where} ORDER BY dispatched_at DESC LIMIT ? OFFSET ?`).all(...params);
|
|
272
276
|
return rows.map(r => this.jobFromRow(r));
|
|
273
277
|
}
|
|
274
278
|
jobFromRow(r) {
|
|
@@ -300,4 +304,366 @@ export class SqliteStorage {
|
|
|
300
304
|
};
|
|
301
305
|
}
|
|
302
306
|
}
|
|
307
|
+
/**
|
|
308
|
+
* Cross-process job/metric/worker store backed by Redis. Works alongside
|
|
309
|
+
* BullMQ's own Redis instance (separate connection by default) so the dev
|
|
310
|
+
* server and worker process share state.
|
|
311
|
+
*
|
|
312
|
+
* Falls back to memory if `ioredis` cannot be imported — the boot warning
|
|
313
|
+
* surfaces the misconfig.
|
|
314
|
+
*/
|
|
315
|
+
export class RedisStorage {
|
|
316
|
+
config;
|
|
317
|
+
maxJobs;
|
|
318
|
+
client = null;
|
|
319
|
+
prefix;
|
|
320
|
+
constructor(config = {}, maxJobs = 1000) {
|
|
321
|
+
this.config = config;
|
|
322
|
+
this.maxJobs = maxJobs;
|
|
323
|
+
this.prefix = `${config.prefix ?? 'rudderjs'}:horizon`;
|
|
324
|
+
}
|
|
325
|
+
async getClient() {
|
|
326
|
+
if (this.client)
|
|
327
|
+
return this.client;
|
|
328
|
+
const mod = await import(/* @vite-ignore */ 'ioredis');
|
|
329
|
+
const Redis = mod.default;
|
|
330
|
+
this.client = new Redis(this.connectionOpts());
|
|
331
|
+
return this.client;
|
|
332
|
+
}
|
|
333
|
+
connectionOpts() {
|
|
334
|
+
const c = this.config;
|
|
335
|
+
if (c.url) {
|
|
336
|
+
try {
|
|
337
|
+
const u = new URL(c.url.replace(/^rediss?:\/\//, 'http://'));
|
|
338
|
+
return {
|
|
339
|
+
host: u.hostname || '127.0.0.1',
|
|
340
|
+
port: parseInt(u.port || '6379', 10),
|
|
341
|
+
...(u.password ? { password: decodeURIComponent(u.password) } : {}),
|
|
342
|
+
...(u.pathname.length > 1 ? { db: parseInt(u.pathname.slice(1), 10) } : {}),
|
|
343
|
+
lazyConnect: false,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
catch { /* fall through */ }
|
|
347
|
+
}
|
|
348
|
+
return {
|
|
349
|
+
host: c.host ?? '127.0.0.1',
|
|
350
|
+
port: c.port ?? 6379,
|
|
351
|
+
...(c.password ? { password: c.password } : {}),
|
|
352
|
+
lazyConnect: false,
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
// ─── Keys ────────────────────────────────────────────────
|
|
356
|
+
//
|
|
357
|
+
// Job records are stored at `jobs:{queue}:{id}`. BullMQ assigns ids
|
|
358
|
+
// per-queue (each queue starts at 1), so keying by id alone collides
|
|
359
|
+
// across queues. The `recent` and `failed` ZSets store members as
|
|
360
|
+
// `{queue}:{id}` so the listing path can split + lookup.
|
|
361
|
+
k = {
|
|
362
|
+
job: (queue, id) => `${this.prefix}:jobs:${queue}:${id}`,
|
|
363
|
+
recent: () => `${this.prefix}:jobs:recent`,
|
|
364
|
+
failed: () => `${this.prefix}:jobs:failed`,
|
|
365
|
+
byQueue: (q) => `${this.prefix}:jobs:by-queue:${q}`,
|
|
366
|
+
metricCurrent: (q) => `${this.prefix}:metrics:${q}:current`,
|
|
367
|
+
metricHistory: (q) => `${this.prefix}:metrics:${q}:history`,
|
|
368
|
+
worker: (id) => `${this.prefix}:workers:${id}`,
|
|
369
|
+
workersIndex: () => `${this.prefix}:workers`,
|
|
370
|
+
};
|
|
371
|
+
member(queue, id) {
|
|
372
|
+
return `${queue}:${id}`;
|
|
373
|
+
}
|
|
374
|
+
parseMember(member) {
|
|
375
|
+
const idx = member.indexOf(':');
|
|
376
|
+
if (idx === -1)
|
|
377
|
+
return null; // legacy v1 member; skip
|
|
378
|
+
return { queue: member.slice(0, idx), id: member.slice(idx + 1) };
|
|
379
|
+
}
|
|
380
|
+
// ─── Jobs ────────────────────────────────────────────────
|
|
381
|
+
async recordJob(job) {
|
|
382
|
+
const r = await this.getClient();
|
|
383
|
+
const m = this.member(job.queue, job.id);
|
|
384
|
+
const key = this.k.job(job.queue, job.id);
|
|
385
|
+
// Idempotent fields — same value across the lifecycle, safe to overwrite.
|
|
386
|
+
await r.hset(key, {
|
|
387
|
+
id: job.id,
|
|
388
|
+
name: job.name,
|
|
389
|
+
queue: job.queue,
|
|
390
|
+
payload: JSON.stringify(job.payload),
|
|
391
|
+
dispatchedAt: job.dispatchedAt.toISOString(),
|
|
392
|
+
tags: JSON.stringify(job.tags),
|
|
393
|
+
});
|
|
394
|
+
// Lifecycle fields — set only if not already written. The dashboard
|
|
395
|
+
// process emits `job.dispatched` and queues an async storage write via
|
|
396
|
+
// microtask; the worker process can update the record to `processing`
|
|
397
|
+
// / `completed` BEFORE that microtask flushes (the dispatcher races
|
|
398
|
+
// BullMQ's polling). Plain HSET would let a late dispatched-write
|
|
399
|
+
// clobber the worker's status. HSETNX makes recordJob idempotent for
|
|
400
|
+
// these fields so worker updates always win.
|
|
401
|
+
await Promise.all([
|
|
402
|
+
r.hsetnx(key, 'status', job.status),
|
|
403
|
+
r.hsetnx(key, 'attempts', job.attempts),
|
|
404
|
+
r.hsetnx(key, 'startedAt', job.startedAt ? job.startedAt.toISOString() : ''),
|
|
405
|
+
r.hsetnx(key, 'completedAt', job.completedAt ? job.completedAt.toISOString() : ''),
|
|
406
|
+
r.hsetnx(key, 'duration', job.duration ?? -1),
|
|
407
|
+
r.hsetnx(key, 'exception', job.exception ?? ''),
|
|
408
|
+
]);
|
|
409
|
+
const score = job.dispatchedAt.getTime();
|
|
410
|
+
await r.zadd(this.k.recent(), score, m);
|
|
411
|
+
await r.zadd(this.k.byQueue(job.queue), score, job.id);
|
|
412
|
+
if (job.status === 'failed') {
|
|
413
|
+
await r.zadd(this.k.failed(), score, m);
|
|
414
|
+
}
|
|
415
|
+
// Cap recent index to maxJobs (drop oldest)
|
|
416
|
+
const count = await r.zcard(this.k.recent());
|
|
417
|
+
if (count > this.maxJobs) {
|
|
418
|
+
await r.zremrangebyrank(this.k.recent(), 0, count - this.maxJobs - 1);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
async updateJob(queue, id, updates) {
|
|
422
|
+
const r = await this.getClient();
|
|
423
|
+
const fields = {};
|
|
424
|
+
if (updates.status !== undefined)
|
|
425
|
+
fields['status'] = updates.status;
|
|
426
|
+
if (updates.attempts !== undefined)
|
|
427
|
+
fields['attempts'] = updates.attempts;
|
|
428
|
+
if (updates.exception !== undefined)
|
|
429
|
+
fields['exception'] = updates.exception ?? '';
|
|
430
|
+
if (updates.startedAt !== undefined)
|
|
431
|
+
fields['startedAt'] = updates.startedAt ? updates.startedAt.toISOString() : '';
|
|
432
|
+
if (updates.completedAt !== undefined)
|
|
433
|
+
fields['completedAt'] = updates.completedAt ? updates.completedAt.toISOString() : '';
|
|
434
|
+
if (updates.duration !== undefined)
|
|
435
|
+
fields['duration'] = updates.duration ?? -1;
|
|
436
|
+
if (updates.payload !== undefined)
|
|
437
|
+
fields['payload'] = JSON.stringify(updates.payload);
|
|
438
|
+
if (updates.tags !== undefined)
|
|
439
|
+
fields['tags'] = JSON.stringify(updates.tags);
|
|
440
|
+
if (Object.keys(fields).length === 0)
|
|
441
|
+
return;
|
|
442
|
+
await r.hset(this.k.job(queue, id), fields);
|
|
443
|
+
const m = this.member(queue, id);
|
|
444
|
+
if (updates.status === 'failed') {
|
|
445
|
+
const job = await this.findJob(queue, id);
|
|
446
|
+
if (job)
|
|
447
|
+
await r.zadd(this.k.failed(), job.dispatchedAt.getTime(), m);
|
|
448
|
+
}
|
|
449
|
+
else if (updates.status === 'completed') {
|
|
450
|
+
await r.zrem(this.k.failed(), m);
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
async recentJobs(options) {
|
|
454
|
+
return this.listJobs(this.k.recent(), options);
|
|
455
|
+
}
|
|
456
|
+
async failedJobs(options) {
|
|
457
|
+
return this.listJobs(this.k.failed(), { ...options, status: 'failed' });
|
|
458
|
+
}
|
|
459
|
+
async findJob(queue, id) {
|
|
460
|
+
const r = await this.getClient();
|
|
461
|
+
const hash = await r.hgetall(this.k.job(queue, id));
|
|
462
|
+
if (!hash || Object.keys(hash).length === 0)
|
|
463
|
+
return null;
|
|
464
|
+
return this.jobFromHash(hash);
|
|
465
|
+
}
|
|
466
|
+
async deleteJob(queue, id) {
|
|
467
|
+
const r = await this.getClient();
|
|
468
|
+
const m = this.member(queue, id);
|
|
469
|
+
await r.del(this.k.job(queue, id));
|
|
470
|
+
await r.zrem(this.k.recent(), m);
|
|
471
|
+
await r.zrem(this.k.failed(), m);
|
|
472
|
+
}
|
|
473
|
+
async pruneOlderThan(date) {
|
|
474
|
+
const r = await this.getClient();
|
|
475
|
+
const cut = date.getTime();
|
|
476
|
+
const members = await r.zrangebyscore(this.k.recent(), '-inf', cut);
|
|
477
|
+
if (members.length === 0)
|
|
478
|
+
return;
|
|
479
|
+
await Promise.all(members.map(m => {
|
|
480
|
+
const parsed = this.parseMember(m);
|
|
481
|
+
return parsed ? r.del(this.k.job(parsed.queue, parsed.id)) : Promise.resolve(0);
|
|
482
|
+
}));
|
|
483
|
+
await r.zremrangebyscore(this.k.recent(), '-inf', cut);
|
|
484
|
+
await r.zremrangebyscore(this.k.failed(), '-inf', cut);
|
|
485
|
+
}
|
|
486
|
+
async jobCount(status) {
|
|
487
|
+
const r = await this.getClient();
|
|
488
|
+
if (!status)
|
|
489
|
+
return r.zcard(this.k.recent());
|
|
490
|
+
if (status === 'failed')
|
|
491
|
+
return r.zcard(this.k.failed());
|
|
492
|
+
// For other statuses we'd have to scan — keep the count approximate by
|
|
493
|
+
// listing then filtering. Cheap relative to the dashboard's polling rate.
|
|
494
|
+
const jobs = await this.listJobs(this.k.recent(), { perPage: this.maxJobs });
|
|
495
|
+
return jobs.filter(j => j.status === status).length;
|
|
496
|
+
}
|
|
497
|
+
// ─── Metrics ─────────────────────────────────────────────
|
|
498
|
+
async recordMetric(metric) {
|
|
499
|
+
const r = await this.getClient();
|
|
500
|
+
await r.hset(this.k.metricCurrent(metric.queue), this.metricToHash(metric));
|
|
501
|
+
const ts = Date.now();
|
|
502
|
+
await r.zadd(this.k.metricHistory(metric.queue), ts, JSON.stringify({ ts, ...metric }));
|
|
503
|
+
const count = await r.zcard(this.k.metricHistory(metric.queue));
|
|
504
|
+
if (count > 1440) {
|
|
505
|
+
await r.zremrangebyrank(this.k.metricHistory(metric.queue), 0, count - 1441);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
async metrics(queue, since) {
|
|
509
|
+
const r = await this.getClient();
|
|
510
|
+
const members = await r.zrangebyscore(this.k.metricHistory(queue), since.getTime(), '+inf');
|
|
511
|
+
return members.map(m => {
|
|
512
|
+
const { ts: _ts, ...rest } = JSON.parse(m);
|
|
513
|
+
void _ts;
|
|
514
|
+
return rest;
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
async currentMetrics() {
|
|
518
|
+
const r = await this.getClient();
|
|
519
|
+
// Discover queue names directly from the recent-jobs zset members
|
|
520
|
+
// (now `{queue}:{id}`) — no per-record hgetall needed.
|
|
521
|
+
const members = await r.zrevrange(this.k.recent(), 0, Math.min(this.maxJobs, 500) - 1);
|
|
522
|
+
if (members.length === 0)
|
|
523
|
+
return [];
|
|
524
|
+
const queues = new Set();
|
|
525
|
+
for (const m of members) {
|
|
526
|
+
const parsed = this.parseMember(m);
|
|
527
|
+
if (parsed)
|
|
528
|
+
queues.add(parsed.queue);
|
|
529
|
+
}
|
|
530
|
+
const metrics = [];
|
|
531
|
+
for (const q of queues) {
|
|
532
|
+
const hash = await r.hgetall(this.k.metricCurrent(q));
|
|
533
|
+
if (hash && Object.keys(hash).length > 0)
|
|
534
|
+
metrics.push(this.metricFromHash(hash));
|
|
535
|
+
}
|
|
536
|
+
return metrics;
|
|
537
|
+
}
|
|
538
|
+
// ─── Workers ─────────────────────────────────────────────
|
|
539
|
+
async recordWorker(worker) {
|
|
540
|
+
const r = await this.getClient();
|
|
541
|
+
await r.hset(this.k.worker(worker.id), {
|
|
542
|
+
id: worker.id,
|
|
543
|
+
queue: worker.queue,
|
|
544
|
+
status: worker.status,
|
|
545
|
+
jobsRun: worker.jobsRun,
|
|
546
|
+
memoryMb: worker.memoryMb,
|
|
547
|
+
startedAt: worker.startedAt.toISOString(),
|
|
548
|
+
lastJobAt: worker.lastJobAt ? worker.lastJobAt.toISOString() : '',
|
|
549
|
+
});
|
|
550
|
+
await r.sadd(this.k.workersIndex(), worker.id);
|
|
551
|
+
}
|
|
552
|
+
async workers() {
|
|
553
|
+
const r = await this.getClient();
|
|
554
|
+
const ids = await r.smembers(this.k.workersIndex());
|
|
555
|
+
if (ids.length === 0)
|
|
556
|
+
return [];
|
|
557
|
+
const out = [];
|
|
558
|
+
for (const id of ids) {
|
|
559
|
+
const h = await r.hgetall(this.k.worker(id));
|
|
560
|
+
if (!h || Object.keys(h).length === 0)
|
|
561
|
+
continue;
|
|
562
|
+
out.push({
|
|
563
|
+
id: h['id'] ?? id,
|
|
564
|
+
queue: h['queue'] ?? 'default',
|
|
565
|
+
status: h['status'] ?? 'idle',
|
|
566
|
+
jobsRun: parseInt(h['jobsRun'] ?? '0', 10),
|
|
567
|
+
memoryMb: parseFloat(h['memoryMb'] ?? '0'),
|
|
568
|
+
startedAt: new Date(h['startedAt'] ?? Date.now()),
|
|
569
|
+
lastJobAt: h['lastJobAt'] ? new Date(h['lastJobAt']) : null,
|
|
570
|
+
});
|
|
571
|
+
}
|
|
572
|
+
return out;
|
|
573
|
+
}
|
|
574
|
+
/** @internal — close the Redis connection. Used in tests + shutdown. */
|
|
575
|
+
async disconnect() {
|
|
576
|
+
if (this.client) {
|
|
577
|
+
try {
|
|
578
|
+
await this.client.quit();
|
|
579
|
+
}
|
|
580
|
+
catch { /* already closed */ }
|
|
581
|
+
this.client = null;
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
// ─── Hash <-> object ─────────────────────────────────────
|
|
585
|
+
jobToHash(j) {
|
|
586
|
+
return {
|
|
587
|
+
id: j.id,
|
|
588
|
+
name: j.name,
|
|
589
|
+
queue: j.queue,
|
|
590
|
+
status: j.status,
|
|
591
|
+
payload: JSON.stringify(j.payload),
|
|
592
|
+
attempts: j.attempts,
|
|
593
|
+
exception: j.exception ?? '',
|
|
594
|
+
dispatchedAt: j.dispatchedAt.toISOString(),
|
|
595
|
+
startedAt: j.startedAt ? j.startedAt.toISOString() : '',
|
|
596
|
+
completedAt: j.completedAt ? j.completedAt.toISOString() : '',
|
|
597
|
+
duration: j.duration ?? -1,
|
|
598
|
+
tags: JSON.stringify(j.tags),
|
|
599
|
+
};
|
|
600
|
+
}
|
|
601
|
+
jobFromHash(h) {
|
|
602
|
+
const dur = parseInt(h['duration'] ?? '-1', 10);
|
|
603
|
+
return {
|
|
604
|
+
id: h['id'] ?? '',
|
|
605
|
+
name: h['name'] ?? '',
|
|
606
|
+
queue: h['queue'] ?? 'default',
|
|
607
|
+
status: h['status'] ?? 'pending',
|
|
608
|
+
payload: h['payload'] ? JSON.parse(h['payload']) : {},
|
|
609
|
+
attempts: parseInt(h['attempts'] ?? '0', 10),
|
|
610
|
+
exception: h['exception'] ? h['exception'] : null,
|
|
611
|
+
dispatchedAt: h['dispatchedAt'] ? new Date(h['dispatchedAt']) : new Date(0),
|
|
612
|
+
startedAt: h['startedAt'] ? new Date(h['startedAt']) : null,
|
|
613
|
+
completedAt: h['completedAt'] ? new Date(h['completedAt']) : null,
|
|
614
|
+
duration: dur < 0 ? null : dur,
|
|
615
|
+
tags: h['tags'] ? JSON.parse(h['tags']) : [],
|
|
616
|
+
};
|
|
617
|
+
}
|
|
618
|
+
metricToHash(m) {
|
|
619
|
+
return {
|
|
620
|
+
queue: m.queue, throughput: m.throughput, waitTime: m.waitTime, runtime: m.runtime,
|
|
621
|
+
pending: m.pending, active: m.active, completed: m.completed, failed: m.failed,
|
|
622
|
+
};
|
|
623
|
+
}
|
|
624
|
+
metricFromHash(h) {
|
|
625
|
+
return {
|
|
626
|
+
queue: h['queue'] ?? 'default',
|
|
627
|
+
throughput: parseFloat(h['throughput'] ?? '0'),
|
|
628
|
+
waitTime: parseFloat(h['waitTime'] ?? '0'),
|
|
629
|
+
runtime: parseFloat(h['runtime'] ?? '0'),
|
|
630
|
+
pending: parseInt(h['pending'] ?? '0', 10),
|
|
631
|
+
active: parseInt(h['active'] ?? '0', 10),
|
|
632
|
+
completed: parseInt(h['completed'] ?? '0', 10),
|
|
633
|
+
failed: parseInt(h['failed'] ?? '0', 10),
|
|
634
|
+
};
|
|
635
|
+
}
|
|
636
|
+
async listJobs(indexKey, options) {
|
|
637
|
+
const r = await this.getClient();
|
|
638
|
+
const page = options?.page ?? 1;
|
|
639
|
+
const perPage = options?.perPage ?? 50;
|
|
640
|
+
const start = (page - 1) * perPage;
|
|
641
|
+
const members = await r.zrevrange(indexKey, start, start + perPage * 4);
|
|
642
|
+
if (members.length === 0)
|
|
643
|
+
return [];
|
|
644
|
+
const pipe = r.pipeline();
|
|
645
|
+
for (const m of members) {
|
|
646
|
+
const parsed = this.parseMember(m);
|
|
647
|
+
if (parsed)
|
|
648
|
+
pipe.hgetall(this.k.job(parsed.queue, parsed.id));
|
|
649
|
+
}
|
|
650
|
+
const rows = await pipe.exec() ?? [];
|
|
651
|
+
let jobs = [];
|
|
652
|
+
for (const [, hash] of rows) {
|
|
653
|
+
const h = hash;
|
|
654
|
+
if (h && Object.keys(h).length > 0)
|
|
655
|
+
jobs.push(this.jobFromHash(h));
|
|
656
|
+
}
|
|
657
|
+
if (options?.status)
|
|
658
|
+
jobs = jobs.filter(j => j.status === options.status);
|
|
659
|
+
if (options?.queue)
|
|
660
|
+
jobs = jobs.filter(j => j.queue === options.queue);
|
|
661
|
+
if (options?.search) {
|
|
662
|
+
const s = options.search.toLowerCase();
|
|
663
|
+
jobs = jobs.filter(j => j.name.toLowerCase().includes(s) ||
|
|
664
|
+
JSON.stringify(j.payload).toLowerCase().includes(s));
|
|
665
|
+
}
|
|
666
|
+
return jobs.slice(0, perPage);
|
|
667
|
+
}
|
|
668
|
+
}
|
|
303
669
|
//# sourceMappingURL=storage.js.map
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|