Skip to content

Make deployment kill-timeout configurable via env var

Placeholder ppxd requested to merge fix/configurable-deployment-timeout into main

Summary

  • The 60-minute deployment kill-timer in DeploymentPipelineRunner was a hardcoded internal init constant with no operator override — any deployment legitimately exceeding 60 minutes (large DB migrations, multi-stage rollouts) was force-cancelled with no escape hatch.
  • Add SQUID_DEPLOYMENT_TIMEOUT_MINUTES following the established HalibutPollingWorkAdmission.ParseMaxPendingWorkPerAgent pattern: a pure static parser (ParseDeploymentTimeout) with a safe fallback to the 60-minute default on blank / invalid / non-positive input, plus a thin env reader wired into the property's default initializer.
  • Non-breaking: constructor signature unchanged; only additive public const / internal const / public static members. With the variable unset the effective timeout is byte-identical to the previous 60-minute behaviour.

Test plan

  • Unit: env-var name pinned (Rule 8) + default-minutes pinned
  • Unit: 11-case [Theory] over ParseDeploymentTimeout (null / empty / whitespace / valid / surrounding-whitespace / large / equal-to-default / garbage / decimal / zero / negative)
  • Unit: env-set drives effective DeploymentTimeout; env-unset falls back to 60 min (env saved/restored, isolation-safe distinct value)
  • Regression: full Services.Deployments namespace 3981/3981 green; all 4 DeploymentPipelineRunner* test classes 42/42 green
  • dotnet build src/Squid.Core — 0 errors

Merge request reports

Loading