Merge pull request #6789 from Crypt-iQ/waitingclose

server+htlcswitch: check waiting-close fwdpkgs in reforwardResponses
This commit is contained in:
Olaoluwa Osuntokun 2022-09-30 16:39:49 -07:00 committed by GitHub
commit bc5638428e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 2 deletions

View File

@ -45,6 +45,9 @@ minimum version needed to build the project.
## Misc
* [Fixed a bug where the Switch did not reforward settles or fails for
waiting-close channels](https://github.com/lightningnetwork/lnd/pull/6789)
* [Fixed a flake in the TestChannelLinkCancelFullCommitment unit
test](https://github.com/lightningnetwork/lnd/pull/6792).

View File

@ -194,6 +194,7 @@ func initSwitchWithDB(startingHeight uint32, db *channeldb.DB) (*Switch, error)
cfg := Config{
DB: db,
FetchAllOpenChannels: db.ChannelStateDB().FetchAllOpenChannels,
FetchAllChannels: db.ChannelStateDB().FetchAllChannels,
FetchClosedChannels: db.ChannelStateDB().FetchClosedChannels,
SwitchPackager: channeldb.NewSwitchPackager(),
FwdingLog: &mockForwardingLog{

View File

@ -145,6 +145,10 @@ type Config struct {
// channels from the channel database.
FetchAllOpenChannels func() ([]*channeldb.OpenChannel, error)
// FetchAllChannels is a function that fetches all pending open, open,
// and waiting close channels from the database.
FetchAllChannels func() ([]*channeldb.OpenChannel, error)
// FetchClosedChannels is a function that fetches all closed channels
// from the channel database.
FetchClosedChannels func(
@ -2083,9 +2087,11 @@ func (s *Switch) reforwardResolutions() error {
// reforwardResponses for every known, non-pending channel, loads all associated
// forwarding packages and reforwards any Settle or Fail HTLCs found. This is
// used to resurrect the switch's mailboxes after a restart.
// used to resurrect the switch's mailboxes after a restart. This also runs for
// waiting close channels since there may be settles or fails that need to be
// reforwarded before they completely close.
func (s *Switch) reforwardResponses() error {
openChannels, err := s.cfg.FetchAllOpenChannels()
openChannels, err := s.cfg.FetchAllChannels()
if err != nil {
return err
}

View File

@ -630,6 +630,7 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
s.htlcSwitch, err = htlcswitch.New(htlcswitch.Config{
DB: dbs.ChanStateDB,
FetchAllOpenChannels: s.chanStateDB.FetchAllOpenChannels,
FetchAllChannels: s.chanStateDB.FetchAllChannels,
FetchClosedChannels: s.chanStateDB.FetchClosedChannels,
LocalChannelClose: func(pubKey []byte,
request *htlcswitch.ChanClose) {