fix: ensure node state persisted before shutdown #743
+22
−7
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.
Fixes #739
This PR prevents channel state divergence during node shutdown by ensuring state is fully persisted before the service is destroyed.
Description
When the app was stopped while a 0-conf channel had uncommitted state updates, the client (LDK) could end up with a different commitment height than the LSP. On reconnect, the LSP detected this mismatch as "possible data loss" and force-closed the channel.
This PR adds two mitigations:
syncWallets()before stopping the node to ensure the latest channel state is persisted to VSSrunBlockinginonDestroy()to wait for the node to fully stop before the service is destroyed, with a 5-second timeout to avoid ANRPreview
CJIT.webm
multiple-transactions-and-poor-signal.webm
QA Notes
1. Test graceful shutdown
Performing final sync before shutdown…Final sync completedonDestroy startedonDestroy completed2. Test restart after stop
3. Regression