Skip to content

compose: start validator clients once charon is live - #494

Closed
KaloyanTanev wants to merge 3 commits into
gloasfrom
kalo/vc-wait-for-charon-config
Closed

KaloyanTanev wants to merge 3 commits into
gloasfrom
kalo/vc-wait-for-charon-config

Conversation

@KaloyanTanev

@KaloyanTanev KaloyanTanev commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Validator clients now start once charon is healthy instead of waiting for proposer-config.json to exist. On an existing node the file is already there, so a recreated VC rendered it right away, before charon (depends_on only waited for its container to start) had rewritten it with its current flags.

Charon's healthcheck moves from /readyz to /livez, and every VC (including the default Lodestar one) depends on charon with condition: service_healthy. Charon serves /livez only once started, after it has written or updated the file, so a healthy charon means the file is current. /readyz can't be used: it stays unready until a VC connects. start_interval: 1s keeps the wait short instead of the 30s default interval (Docker Engine 25+). The wrappers drop their wait loops and keep the fallback for a missing file. The VC test override gives its stub charon an always-healthy check.

Trade-off: docker ps shows charon healthy once it runs, not once it's ready; readiness stays in the app_monitoring_readyz metric and its alerts.

Tested with docker compose config on the real and test compose files, and with stub services: a VC depending on a charon stub that writes the file and serves /livez after 5s started in the same second the file was written. Pairs with ObolNetwork/charon#4784, which updates the builder settings of an existing proposer config on start.

@KaloyanTanev KaloyanTanev changed the title vc: wait for charon before reading the proposer config compose: start validator clients once charon is live Oct 18, 2026
@sonarqubecloud

Copy link
Copy Markdown

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