From 7c869386c1cc9b80da7cef3c93c515fc77f2d7f1 Mon Sep 17 00:00:00 2001 From: Vitalii Drohan Date: Fri, 6 Mar 2026 19:19:31 +0100 Subject: [PATCH] fix: apply default healthcheck intervals for readycheck sidecars When ReadyCheck fields (Interval, Timeout, etc.) are zero-valued (e.g. from YAML recipes), Docker interprets "0s" as "use defaults" which means a 30s polling interval. This caused services like ClickHouse to appear to take ~30s to start when they were actually ready in ~2s. Apply sensible defaults (1s interval, 10s timeout, 30 retries). --- playground/manifest.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/playground/manifest.go b/playground/manifest.go index 10ff577d..eaa4129a 100644 --- a/playground/manifest.go +++ b/playground/manifest.go @@ -279,6 +279,20 @@ func (s *Manifest) Validate(out *output) error { readyCheck := *ss.ReadyCheck ss.ReadyCheck = nil + + // Apply sensible defaults so Docker doesn't fall back to 30s interval + if readyCheck.Interval == 0 { + readyCheck.Interval = 1 * time.Second + } + if readyCheck.Timeout == 0 { + readyCheck.Timeout = 10 * time.Second + } + if readyCheck.Retries == 0 { + readyCheck.Retries = 30 + } + if readyCheck.StartPeriod == 0 { + readyCheck.StartPeriod = 1 * time.Second + } ss.WithLabel(healthCheckSidecarLabel, sidecarName) // the url supplied by the service will bind to localhost, we have to change it