diff --git a/engine/packages/pegboard/src/ops/runner_config/upsert.rs b/engine/packages/pegboard/src/ops/runner_config/upsert.rs index 51eb91ff94..094b68e16c 100644 --- a/engine/packages/pegboard/src/ops/runner_config/upsert.rs +++ b/engine/packages/pegboard/src/ops/runner_config/upsert.rs @@ -29,6 +29,7 @@ pub async fn pegboard_runner_config_upsert(ctx: &OperationCtx, input: &Input) -> RunnerConfigKind::Serverless { url, headers, + request_lifespan, drain_grace_period, slots_per_runner, .. @@ -81,6 +82,15 @@ pub async fn pegboard_runner_config_upsert(ctx: &OperationCtx, input: &Input) -> .build()); } + if *drain_grace_period >= *request_lifespan { + return Err(errors::RunnerConfig::Invalid { + reason: format!( + "`drain_grace_period` must be less than `request_lifespan` ({drain_grace_period}s >= {request_lifespan}s)" + ), + } + .build()); + } + let actor_stop_threshold_ms = ctx.config().pegboard().actor_stop_threshold(); let drain_grace_period_ms = i64::from(*drain_grace_period) * 1000; if drain_grace_period_ms > actor_stop_threshold_ms {