Readiness Stuck
Symptoms
Section titled “Symptoms”- a daemon stays in
startingorrunningand never reachesready - dependent services do not start
- startup appears frozen even though a process exists
Likely causes
Section titled “Likely causes”ready.typedoes not match how the service becomes usableready.type: "http"uses a wrong URL or returns non-2xx/3xxready.type: "tcp"points to the wrong port- service is listening on another interface/port than configured
- dependency graph waits on a readiness gate that never passes
Resolution
Section titled “Resolution”- Temporarily disable readiness to isolate pure process startup:
{ "services": { "api": { "cmd": ["go", "run", "./cmd/api"], "ready": {"type": "none"} } }}-
Re-enable one probe at a time.
-
For HTTP readiness, test the exact URL manually:
curl -i http://127.0.0.1:3000/healthz-
For TCP readiness, ensure
ready.portorservice.portmatches the real listener. -
Keep
dependsOnonly for hard runtime requirements. Extra edges create unnecessary blocking.
Important behavior
Section titled “Important behavior”- Daemon services with readiness gates block later waves until probe success.
- Oneshot services wait for exit code
0; readiness probing can continue asynchronously. - There is no user-configurable readiness timeout knob in current schema.
For readiness, wave ordering, and service field details, see Configuration.