Skip to content
Latchkey

Self-Healing CI: Recovering Flaky DNS Inside a Service Container

A container that briefly cannot resolve a sibling service by name hit an internal-DNS blip, not a wiring mistake -- the next lookup resolves fine.

The problem

A job that talks to a service container by hostname fails with could not resolve host for the service name. The container network and aliases are configured correctly; the embedded DNS that resolves service names had a brief hiccup. A human re-runs the job and the name resolves with no change.

Typical symptom
getaddrinfo EAI_AGAIN db ... Temporary failure in name resolution
# resolving the service container alias "db"

Why it happens

Container networks resolve service names through an embedded DNS resolver. Early in a job, or under brief load, that resolver can return a temporary failure for a name that is valid and resolves correctly on the next query.

It is a transient internal-DNS blip, not a networking misconfiguration: the alias is correct, the service is up, and the same lookup succeeds moments later.

The manual fix

Manual handling for flaky internal DNS:

  1. Re-run the job so the lookup is retried.
  2. Add retry-with-backoff around the first calls that resolve service names.
  3. Wait for the service to be reachable by name before the dependent step starts.

How this gets automated

An internal name-resolution failure has the same recognizable transient signature as any DNS blip, and the safe response is to wait briefly and retry the lookup. A self-healing CI pipeline detects the resolution failure, retries the step with backoff, and only escalates if the name stays unresolvable, which is the real signal of a misconfigured network rather than a blip.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →