fix: orphaned channel recovery pre-startup#826
Merged
Conversation
ed8c8a1 to
b5da1f0
Compare
Member
Author
|
draft for testing |
Member
Author
|
after setting |
…into fix/orphaned-channels-override
ovitrif
approved these changes
Mar 9, 2026
Collaborator
There was a problem hiding this comment.
tAck
Tested:
- Fresh install from RN migration 🟢
- Normal counterparty close 🟢
Two remarks:
- Would've been great to create a
Closed Channelrecord in the Lightning Connections screen. - Would've been nice to fix #668 for release
2.1.0- Since we're working with milestones now, assigned it the
2.2.0milestone for next release
- Since we're working with milestones now, assigned it the
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.
Fixes #819
Port of synonymdev/bitkit-ios#480
This PR:
Fixes channel manager override by passing
nullfor orphaned recovery — only monitors are needed for sweeping force-closed channelsDescription
When recovering orphaned channel monitors from an RN remote backup, the stale RN channel manager was being passed to LDK alongside the monitors. This overwrites the native app's current channel manager, which can force-close any existing channels the user has opened.
Preview
recover-channel-monitor.webm
counterparty-close.webm
QA Notes
Implement this code to simulate a failure:
OBS: The not can't trigger the ChanelClosed event for the RN closed channel because the old channelManager isn't set anymore, but still can detect the confirmed force-close transaction because it imports the channel monitor. Same behavior on iOS
OBS2: I realized there is not much value on implementing #819 for android because the node is frequently already running from the Foreground Service logic and would have to be restarted anyway