Skip to content

fix(firedancer): network-aware version, SBF install conflict, fdctl symlink force#404

Merged
POPPIN-FUMI merged 3 commits into
mainfrom
fix/firedancer-recipe-bugs
Jun 6, 2026
Merged

fix(firedancer): network-aware version, SBF install conflict, fdctl symlink force#404
POPPIN-FUMI merged 3 commits into
mainfrom
fix/firedancer-recipe-bugs

Conversation

@POPPIN-FUMI

Copy link
Copy Markdown
Contributor

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_firedancer was always read from the mainnet block

update_firedancer.yml / setup_firedancer.yml hardcoded version: v{{ mainnet_validators.version_firedancer }}, regardless of the target network. Updating a testnet/devnet Firedancer node forced you to overwrite the mainnet version field in versions.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_validators fallback keeps old behavior if the lookup ever comes up empty (no regression). Verified live: for a devnet_rpcs host it resolves to the devnet_rpcs value, not the mainnet one.

2. install_jito aborts on leftover SBF binaries

cargo-install-all.sh fails with binary cargo-build-sbf already exists in destination when a prior build left binaries in <jito_dir>/bin. Added a cleanup task that removes the stale cargo-build-sbf / cargo-test-sbf before the build (compile cache is preserved, so the re-run is fast).

3. fdctl symlink refused to overwrite a real file

The state: link task for /usr/local/bin/fdctl failed with "refusing to convert from file to symlink" when a real binary file already lived there. Added force: yes.

Notes

  • All changed playbooks pass YAML parse; Bug update readme #1's expression was validated against the live inventory with ansible -m debug.
  • Known follow-up (not in this PR): the Firedancer make build 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

POPPIN-FUMI and others added 3 commits June 6, 2026 19:07
…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>
@POPPIN-FUMI POPPIN-FUMI merged commit 2ed90de into main Jun 6, 2026
4 of 6 checks passed
@POPPIN-FUMI POPPIN-FUMI deleted the fix/firedancer-recipe-bugs branch June 6, 2026 10:27
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