From b9fd29b906b70272ff2413c15ee62320af27030a Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 2 Jun 2026 11:11:24 -0700 Subject: [PATCH] add compliant worker ID to super simple queue --- .../infrastructure/JobQueues/SuperSimpleQueue.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/server/src/service/infrastructure/JobQueues/SuperSimpleQueue.ts b/server/src/service/infrastructure/JobQueues/SuperSimpleQueue.ts index 353a7ec7c..c96448728 100644 --- a/server/src/service/infrastructure/JobQueues/SuperSimpleQueue.ts +++ b/server/src/service/infrastructure/JobQueues/SuperSimpleQueue.ts @@ -3,6 +3,9 @@ import { ILogger } from "@/utils/logger.js"; import Scheduler from "super-simple-scheduler"; import { IQueueHelper } from "@/service/infrastructure/JobQueues/QueueHelper.js"; import { Monitor, MonitorType, supportsGeoCheck } from "@/types/monitor.js"; +import { hostname } from "node:os"; +import { randomUUID } from "node:crypto"; + const SERVICE_NAME = "JobQueue"; type QueueJobFailure = { @@ -61,6 +64,7 @@ export class SuperSimpleQueue implements ISuperSimpleQueue { private logger: ILogger; private helper: IQueueHelper; + private workerId: string; private monitorsRepository: IMonitorsRepository; private readonly scheduler: Scheduler; @@ -70,6 +74,7 @@ export class SuperSimpleQueue implements ISuperSimpleQueue { this.monitorsRepository = monitorsRepository; this.scheduler = scheduler; this.registerListeners(); + this.workerId = `${hostname()}:${process.pid}:${randomUUID()}`; } get serviceName() { @@ -354,7 +359,13 @@ export class SuperSimpleQueue implements ISuperSimpleQueue { }>, totalRuns: 0, totalFailures: 0, - workers: [], + workers: [ + { + workerId: this.workerId, + mode: "primary", + lastSeenAt: Date.now(), + }, + ], } ); return metrics; @@ -372,7 +383,7 @@ export class SuperSimpleQueue implements ISuperSimpleQueue { monitorActive: job.data?.isActive ?? null, active: job.active, repeat: job.repeat ?? null, - lockedBy: null, + lockedBy: job.lockedAt ? this.workerId : null, lockedUntil: null, lockedAt: job.lockedAt ?? null, runCount: job.runCount ?? 0,