Skip to content

fix(buzz-relay): retry S3 conformance probe on startup transport errors - #6288

Open
FvanW wants to merge 1 commit into
block:mainfrom
FvanW:fix/git-probe-startup-retry
Open

fix(buzz-relay): retry S3 conformance probe on startup transport errors#6288
FvanW wants to merge 1 commit into
block:mainfrom
FvanW:fix/git-probe-startup-retry

Conversation

@FvanW

@FvanW FvanW commented Aug 19, 2026

Copy link
Copy Markdown

Summary

  • The relay's A3 git-conformance probe runs once at startup and treats any error as fatal — including plain transport failures (connection refused, DNS not resolved) when the S3/MinIO backend just hasn't finished starting yet.
  • Observed in practice: relay and its object store started together with no explicit ordering (systemd/compose), the probe hit the backend before it was listening, and the relay crash-looped for ~20s until the backend came up on its own — during which buzz-acp clients saw connection-refused.
  • Now retries only the transport-error case (StoreError::Backend) with exponential backoff — bounded by BUZZ_GIT_PROBE_STARTUP_RETRIES (default 5), starting at BUZZ_GIT_PROBE_STARTUP_BACKOFF_MS (default 500ms, capped at 8s). A real ProbeFailure (backend responded but violated A3) still fails immediately — retrying a semantic conformance failure can't fix it.
  • Documented the new behavior/env vars in deploy/charts/buzz/README.md next to the existing conformance-probe/readiness notes.

Test plan

  • cargo build -p buzz-relay
  • cargo fmt -p buzz-relay -- --check
  • cargo clippy -p buzz-relay --no-deps
  • cargo test -p buzz-relay --bin buzz-relay (11 passed)

🤖 Generated with Claude Code

…errors

The relay's A3 git-conformance probe ran once at startup and treated any
error as fatal, including plain transport failures (connection refused,
DNS not resolved) from an S3/MinIO backend that just hadn't finished
starting yet. In a compose/systemd deployment with no explicit ordering
between the relay and its object store, this crash-looped the relay for
a few seconds until the backend came up on its own.

Retry only StoreError::Backend (transport-layer) with exponential
backoff, bounded by BUZZ_GIT_PROBE_STARTUP_RETRIES (default 5) starting
at BUZZ_GIT_PROBE_STARTUP_BACKOFF_MS (default 500ms, capped at 8s). A
real ProbeFailure — the backend responded but violated A3 — still fails
immediately, since retrying a semantic failure can't fix it.

Signed-off-by: Frederick <fred.vanwagenen@gmail.com>
@FvanW
FvanW requested a review from a team as a code owner August 19, 2026 03:57
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