lnwallet+contractcourt: gracefully handle auto force close post data loss
In this commit, update the start up logic to gracefully handle a seemingly rare case. In this case, a peer detects local data loss with a set of active HTLCs. These HTLCs then eventually expire (they may or may not actually "exist"), causing a force close decision. Before this PR, this attempt would fail with a fatal error that can impede start up. To better handle such a scenario, we'll now catch the error when we fail to force close due to entering the DLP and instead terminate the state machine at the broadcast state. When a commitment transaction eventually confirms, we'll play it as normal. Fixes https://github.com/lightningnetwork/lnd/issues/7984
This commit is contained in:
5 files changed
+112
-25
No files matched your search
@@ -7417,10 +7417,7 @@ func TestForceCloseFailLocalDataLoss(t *testing.T) {
|
||||
// channel, we should fail as it isn't safe to force close a
|
||||
// channel that isn't in the pure default state.
|
||||
_, err = aliceChannel.ForceClose()
|
||||
if err == nil {
|
||||
t.Fatalf("expected force close to fail due to non-default " +
|
||||
"chan state")
|
||||
}
|
||||
require.ErrorIs(t, err, ErrForceCloseLocalDataLoss)
|
||||
}
|
||||
|
||||
// TestForceCloseBorkedState tests that once we force close a channel, it's
|
||||
|
||||
Reference in new issue
Block a user