2fa84ea124
## 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`).
30 lines
932 B
TypeScript
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),
|
|
});
|
|
}
|