feat(combo): per-combo stickyRoundRobinLimit override on the combos page (#4472)

Thanks @adivekar-utexas! Rebased onto release/v3.8.32 (resolved the additive conflict with #3872's queueDepth). Per-combo stickyRoundRobinLimit override now ships.
This commit is contained in:
Abhishek Divekar
2026-06-21 17:04:44 +05:30
committed by GitHub
parent 131474d487
commit 6c8c87dbb6
5 changed files with 90 additions and 6 deletions

View File

@@ -14,7 +14,6 @@ import {
} from "@/shared/constants/upstreamHeaders";
import { MAX_TIMER_TIMEOUT_MS } from "@/shared/utils/runtimeTimeouts";
// ──── Combo Schemas ────
export const comboStepMetaSchema = {
@@ -135,6 +134,10 @@ export const comboRuntimeConfigSchema = z
queueTimeoutMs: z.coerce.number().int().min(1000).max(120000).optional(),
// #3872: pre-cascade semaphore queue depth (round-robin). 0 = fail over immediately.
queueDepth: z.coerce.number().int().min(0).max(100).optional(),
// Per-combo sticky round-robin batch size. When unset, handleRoundRobinCombo
// falls back to the global `settings.stickyRoundRobinLimit` so the existing
// knob still controls the default. 0 clamps to 1 (no batching) upstream.
stickyRoundRobinLimit: z.coerce.number().int().min(0).max(1000).optional(),
healthCheckEnabled: z.boolean().optional(),
healthCheckTimeoutMs: z.coerce.number().int().min(100).max(30000).optional(),
handoffThreshold: z.coerce.number().min(0.5).max(0.94).optional(),
@@ -312,4 +315,4 @@ export const reorderCombosSchema = z
export const testComboSchema = z.object({
comboName: z.string().trim().min(1, "comboName is required"),
});
});