Skip to content

start_in_recovery(..., from_network=#8048

Draft
cjen1-msft wants to merge 1 commit into
microsoft:mainfrom
cjen1-msft:start_in_recovery_from_network
Draft

start_in_recovery(..., from_network=#8048
cjen1-msft wants to merge 1 commit into
microsoft:mainfrom
cjen1-msft:start_in_recovery_from_network

Conversation

@cjen1-msft

@cjen1-msft cjen1-msft commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Currently when we start in recovery we pass a ledger and snapshot directory.
We then:

  • start a node in recovery using those
  • start the followers in join using those ledger and snapshot directories

This means we are not testing divergent snapshots in our CI currently.
This PR somewhat addresses that by providing a from_network argument to start_in_recovery which maps each node in the recovery network to a node in the original network via round-robin and then recovers using that.

Two issues its highlighted, but I haven't yet dug into

  • The snapshot identity issue
  • Joining from a snapshot from a divergent history (I think we morally support this as we definitely support this for the ledger)

Why does the test currently fail as it is doing nothing?
If the network was stable when it was stopped, I'd expect the recovery to be fine, but I think its because we immediately after opening shut down the network.

Add a from_network argument to Network.start_in_recovery so a recovered
network can be seeded from a whole previous network - each node from its own
disk, selected round-robin - rather than from a single ledger/snapshot set.
Node 0 is recovered and the other nodes join it, closer to a production
disaster recovery where every node has its own persistent disk.

Also add an expected-failure e2e test (recovery_from_network) which stops
nodes one by one so their per-node snapshots diverge, and asserts that
recovery currently fails to start under that divergence. This reproduces a
known snapshot-divergence issue and must be updated once it is handled.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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