Readiness Stuck
Symptoms
- a daemon stays in
startingorrunningand never reachesready - dependent services do not start
- startup appears frozen even though a process exists
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
- 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
- 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.