diff --git a/docs/release-notes/release-notes-0.15.0.md b/docs/release-notes/release-notes-0.15.0.md index f2da8ee17..b88b70d9d 100644 --- a/docs/release-notes/release-notes-0.15.0.md +++ b/docs/release-notes/release-notes-0.15.0.md @@ -36,6 +36,10 @@ could result in an "invoice too large" error when creating invoices. Hints are now properly limited to our maximum of 20. +* [Fixed an edge case where the lnd might be stuck at starting due to channel + arbitrator relying on htlcswitch to be started + first](https://github.com/lightningnetwork/lnd/pull/6214). + ## Misc * [An example systemd service file](https://github.com/lightningnetwork/lnd/pull/6033) diff --git a/server.go b/server.go index b729dc97c..d36e013eb 100644 --- a/server.go +++ b/server.go @@ -1777,6 +1777,15 @@ func (s *server) Start() error { } cleanup = cleanup.add(s.fundingMgr.Stop) + // htlcSwitch must be started before chainArb since the latter + // relies on htlcSwitch to deliver resolution message upon + // start. + if err := s.htlcSwitch.Start(); err != nil { + startErr = err + return + } + cleanup = cleanup.add(s.htlcSwitch.Stop) + if err := s.chainArb.Start(); err != nil { startErr = err return @@ -1807,12 +1816,6 @@ func (s *server) Start() error { } cleanup = cleanup.add(s.sphinx.Stop) - if err := s.htlcSwitch.Start(); err != nil { - startErr = err - return - } - cleanup = cleanup.add(s.htlcSwitch.Stop) - if err := s.chanStatusMgr.Start(); err != nil { startErr = err return