Files
triggerdotdev--trigger.dev/apps/webapp/app/runEngine/concerns/dequeueGate.server.ts
Eric Allam 2fa84ea124 feat(webapp): gate worker dequeues by worker queue via env var (#4030)
## Summary

Adds a `RUN_ENGINE_DEQUEUE_DISABLED_WORKER_QUEUES` setting that refuses
worker dequeue requests for the listed worker queues (or base regions),
so their runs stay queued instead of being handed to workers that can't
run them. Blocked dequeues are counted via a
`run_engine.dequeue.blocked` OTel counter (labeled by `worker_queue` and
`region`).
2026-06-24 19:07:43 +01:00

30 lines
932 B
TypeScript

import { getMeter } from "@internal/tracing";
import { env } from "~/env.server";
import {
baseWorkerQueue,
matchesDisabledWorkerQueue,
parseDisabledWorkerQueues,
} from "./workerQueueSplit.server";
const meter = getMeter("run-engine-dequeue-gate");
const blockedDequeueCounter = meter.createCounter("run_engine.dequeue.blocked", {
description:
"Count of worker dequeue requests refused because the worker queue is gated off via RUN_ENGINE_DEQUEUE_DISABLED_WORKER_QUEUES",
});
const disabledWorkerQueues = parseDisabledWorkerQueues(
env.RUN_ENGINE_DEQUEUE_DISABLED_WORKER_QUEUES
);
export function isWorkerQueueDequeueDisabled(workerQueue: string): boolean {
return matchesDisabledWorkerQueue(workerQueue, disabledWorkerQueues);
}
export function recordBlockedDequeue(workerQueue: string): void {
blockedDequeueCounter.add(1, {
worker_queue: workerQueue,
region: baseWorkerQueue(workerQueue),
});
}