Skip to content

CLO-171: balancerd: retry DNS resolution at startup with backoff - #37992

Open
jubrad wants to merge 1 commit into
MaterializeInc:mainfrom
jubrad:justin/clo-171-balancerd-panic-due-to-dns-resolution-failure
Open

CLO-171: balancerd: retry DNS resolution at startup with backoff#37992
jubrad wants to merge 1 commit into
MaterializeInc:mainfrom
jubrad:justin/clo-171-balancerd-panic-due-to-dns-resolution-failure

Conversation

@jubrad

@jubrad jubrad commented Jul 31, 2026

Copy link
Copy Markdown
Member

Summary

During upgrades, balancerd may start before the target environmentd service's DNS name is resolvable. Previously this caused an immediate panic:

thread 'main' (1) panicked at src/balancerd/src/bin/balancerd.rs:293:37:
could not resolve mzv2e9ke850r-environmentd.materialize.svc.cluster.local:6875

This PR adds retry logic with exponential backoff to handle transient DNS resolution failures at startup.

  • Initial backoff: 250ms
  • Max backoff: 2s (clamped)
  • Default timeout: 30s (configurable via --static-resolver-addr-timeout or STATIC_RESOLVER_ADDR_TIMEOUT env var)
  • Logs warnings on each retry attempt and info-level success after retries

Test plan

  • Unit tests pass (cargo test -p mz-balancerd)
  • cargo check -p mz-balancerd passes
  • Manual testing: should be tested in a k8s environment during an upgrade to verify behavior

Fixes https://linear.app/materializeinc/issue/CLO-171/balancerd-panic-due-to-dns-resolution-failure

🤖 Generated with Claude Code

During upgrades, balancerd may start before the target environmentd
service's DNS name is resolvable. Previously this caused an immediate
panic. Now balancerd retries DNS resolution with exponential backoff
(starting at 250ms, clamped to 2s) until the configurable timeout is
reached (default 30s).

A new `--static-resolver-addr-timeout` CLI flag (or
`STATIC_RESOLVER_ADDR_TIMEOUT` env var) controls how long to wait.

Fixes CLO-171.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@jubrad
jubrad marked this pull request as ready for review July 31, 2026 19:07
@jubrad
jubrad enabled auto-merge (squash) July 31, 2026 19:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant