diff --git a/lntest/itest/lnd_test.go b/lntest/itest/lnd_test.go index 69de39145..31142497c 100644 --- a/lntest/itest/lnd_test.go +++ b/lntest/itest/lnd_test.go @@ -13303,6 +13303,15 @@ func testAbandonChannel(net *lntest.NetworkHarness, t *harnessTest) { t.Fatalf("unable to find channel") } + // To make sure the channel is removed from the backup file as well when + // being abandoned, grab a backup snapshot so we can compare it with the + // later state. + bkupBefore, err := ioutil.ReadFile(net.Alice.ChanBackupPath()) + if err != nil { + t.Fatalf("could not get channel backup before abandoning "+ + "channel: %v", err) + } + // Send request to abandon channel. abandonChannelRequest := &lnrpc.AbandonChannelRequest{ ChannelPoint: chanPoint, @@ -13373,6 +13382,16 @@ func testAbandonChannel(net *lntest.NetworkHarness, t *harnessTest) { "graph!") } + // Make sure the channel is no longer in the channel backup list. + bkupAfter, err := ioutil.ReadFile(net.Alice.ChanBackupPath()) + if err != nil { + t.Fatalf("could not get channel backup before abandoning "+ + "channel: %v", err) + } + if len(bkupAfter) >= len(bkupBefore) { + t.Fatalf("channel wasn't removed from channel backup file") + } + // Calling AbandonChannel again, should result in no new errors, as the // channel has already been removed. ctxt, _ = context.WithTimeout(ctxb, defaultTimeout) diff --git a/rpcserver.go b/rpcserver.go index d7a27d90d..1759dd08c 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -2254,6 +2254,10 @@ func (r *rpcServer) AbandonChannel(ctx context.Context, return nil, err } + // Finally, notify the backup listeners that the channel can be removed + // from any channel backups. + r.server.channelNotifier.NotifyClosedChannelEvent(*chanPoint) + return &lnrpc.AbandonChannelResponse{}, nil }