Skip to main content
Roll new mx-chain-go binaries across nodes. Stale upgrade locks self-heal. Downgrade by re-pointing at any cached binary tag.

Shortest commands

To downgrade, pass any --binary-tag T already in the binstore. The acquirer reuses the cached binary instead of re-acquiring it, so the operation collapses to a local symlink swap + restart per node.

Options

Examples

Per-node steps

Each node goes through five idempotent steps: Idempotency means it’s safe to re-run after a crash — every step is a no-op when the desired state is already in place.

Downgrade

upgrade --binary-tag <older> reuses the binstore if the tag is cached, making the operation a local symlink swap + restart per node. If the tag isn’t cached, mxnode re-acquires it. Pruning policy is controlled by [install].binary_keep in config.toml; the default of 3 keeps the last three tags.

Self-healing inflight.toml

Every upgrade writes a ~/.local/state/mxnode/inflight.toml lock at the start, updates current_step as the orchestrator advances, and removes it on completion. The file records:
  • op, started_at, strategy, selected nodes
  • completed nodes, current node, current_step
  • target_binary_tag, target_config_tag, target_proxy_tag
  • [identity] — owner pid + start token
Two purposes: lock (a second upgrade won’t clobber a running one) and crash breadcrumb (cat inflight.toml after a death tells you what step the upgrade died on). When mxnode upgrade starts and finds an existing inflight.toml, it classifies the recorded pid: A crashed upgrade therefore self-recovers on the next invocation; rerunning the same mxnode upgrade command is the recovery procedure. Every per-node step is idempotent, so steps that already ran become no-ops the second time.

Audit log

Every upgrade attempt appends a MigrationEntry to state.toml’s migrations.entries[]:

Dry run

Resolves tags, builds the plan, prints what would run, then exits without touching anything.