fix(firedancer): network-aware version, SBF install conflict, fdctl symlink force#404
Merged
Conversation
…ymlink
Three recipe bugs hit while updating a live devnet Firedancer RPC:
1. update_firedancer / setup_firedancer hardcoded
`v{{ mainnet_validators.version_firedancer }}`, so updating a testnet/
devnet Firedancer node forced you to overwrite the *mainnet* version field.
Now resolves the target host's own inventory group:
`vars[group_names | difference(['all','ungrouped']) | first].version_firedancer`
with a `mainnet_validators.version_firedancer` fallback (no regression).
2. install_jito's `cargo-install-all.sh` aborts with "binary cargo-build-sbf
already exists in destination" when a prior build left binaries in
`<jito_dir>/bin`. Add a cleanup task that removes the stale
cargo-build-sbf / cargo-test-sbf before the build.
3. The fdctl symlink task (state: link) refused to overwrite an existing
regular file at /usr/local/bin/fdctl ("refusing to convert from file to
symlink"). Add `force: yes`.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…d cmn Review follow-up: only cmn/update_firedancer.yml (invoked for every network by `slv r update:firedancer`) needs the dynamic group-based lookup. The network-specific playbooks now use their own static version key (testnet_validators / testnet_rpcs / mainnet_rpcs / mainnet_validators), matching the existing setup_firedancer*.yml convention and removing the group_names ordering foot-gun for any host that is ever in more than one version-key group. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…--shred-receiver-address) For a testnet Index/SendTx RPC with validator_type=jito (non-geyser), the template rendered `--no-port-check--shred-receiver-address ...` on one line with no space or line-continuation, so agave-validator failed to start. Give --no-port-check its own trailing backslash and put the geyser/jito flag blocks on their own gated lines (bash tolerates the final trailing backslash). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three Firedancer recipe bugs hit while updating a live devnet Firedancer RPC (fdctl 0.820 → 0.911, CLI → 4.1.0-beta.2-jito).
1.
version_firedancerwas always read from the mainnet blockupdate_firedancer.yml/setup_firedancer.ymlhardcodedversion: v{{ mainnet_validators.version_firedancer }}, regardless of the target network. Updating a testnet/devnet Firedancer node forced you to overwrite the mainnet version field inversions.yml.Now it resolves the host's own inventory group:
v{{ vars[group_names | difference(['all', 'ungrouped']) | first].version_firedancer | default(mainnet_validators.version_firedancer) }}The
mainnet_validatorsfallback keeps old behavior if the lookup ever comes up empty (no regression). Verified live: for adevnet_rpcshost it resolves to thedevnet_rpcsvalue, not the mainnet one.2.
install_jitoaborts on leftover SBF binariescargo-install-all.shfails withbinary cargo-build-sbf already exists in destinationwhen a prior build left binaries in<jito_dir>/bin. Added a cleanup task that removes the stalecargo-build-sbf/cargo-test-sbfbefore the build (compile cache is preserved, so the re-run is fast).3. fdctl symlink refused to overwrite a real file
The
state: linktask for/usr/local/bin/fdctlfailed with "refusing to convert from file to symlink" when a real binary file already lived there. Addedforce: yes.Notes
ansible -m debug.makebuild runs in/home/solv/firedancer, the same path systemd's ExecStart runs, so an in-place rebuild overwrites the running binary and triggers a crash/auto-restart. A clean fix (stage + swap + graceful restart) is larger and left for a separate change.🤖 Generated with Claude Code