diff --git a/apps/sim/lib/core/bullmq/connection.ts b/apps/sim/lib/core/bullmq/connection.ts index 80def9d5cb5..e888f5772a7 100644 --- a/apps/sim/lib/core/bullmq/connection.ts +++ b/apps/sim/lib/core/bullmq/connection.ts @@ -1,8 +1,8 @@ import type { ConnectionOptions } from 'bullmq' -import { env } from '@/lib/core/config/env' +import { env, isTruthy } from '@/lib/core/config/env' export function isBullMQEnabled(): boolean { - return Boolean(env.REDIS_URL) + return isTruthy(env.CONCURRENCY_CONTROL_ENABLED) && Boolean(env.REDIS_URL) } export function getBullMQConnectionOptions(): ConnectionOptions { diff --git a/apps/sim/lib/core/config/env.ts b/apps/sim/lib/core/config/env.ts index be295643075..5a1dc5743d1 100644 --- a/apps/sim/lib/core/config/env.ts +++ b/apps/sim/lib/core/config/env.ts @@ -186,6 +186,7 @@ export const env = createEnv({ FREE_PLAN_LOG_RETENTION_DAYS: z.string().optional(), // Log retention days for free plan users // Admission & Burst Protection + CONCURRENCY_CONTROL_ENABLED: z.string().optional().default('false'), // Set to 'true' to enable BullMQ-based concurrency control (default: inline execution) ADMISSION_GATE_MAX_INFLIGHT: z.string().optional().default('500'), // Max concurrent in-flight execution requests per pod DISPATCH_MAX_QUEUE_PER_WORKSPACE: z.string().optional().default('1000'), // Max queued dispatch jobs per workspace DISPATCH_MAX_QUEUE_GLOBAL: z.string().optional().default('50000'), // Max queued dispatch jobs globally