mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-09-05 17:05:50 +02:00
contractcourt: make sure launchResolvers
is called on new blockbeat
This is an oversight from addressing this commment: https://github.com/lightningnetwork/lnd/pull/9277#discussion_r1882410396 where we should focus on skipping the close events but not the resolvers.
This commit is contained in:
@@ -2994,12 +2994,18 @@ func (c *ChannelArbitrator) handleBlockbeat(beat chainio.Blockbeat) error {
|
||||
|
||||
// If the state is StateContractClosed, StateWaitingFullResolution, or
|
||||
// StateFullyResolved, there's no need to read the close event channel
|
||||
// and launch the resolvers since the arbitrator can only get to this
|
||||
// state after processing a previous close event and launched all its
|
||||
// resolvers.
|
||||
// since the arbitrator can only get to this state after processing a
|
||||
// previous close event and launched all its resolvers.
|
||||
if c.state.IsContractClosed() {
|
||||
log.Infof("ChannelArbitrator(%v): skipping launching "+
|
||||
"resolvers in state=%v", c.cfg.ChanPoint, c.state)
|
||||
log.Infof("ChannelArbitrator(%v): skipping reading close "+
|
||||
"events in state=%v", c.cfg.ChanPoint, c.state)
|
||||
|
||||
// Launch all active resolvers when a new blockbeat is
|
||||
// received, even when the contract is closed, we still need
|
||||
// this as the resolvers may transform into new ones. For
|
||||
// already launched resolvers this will be NOOP as they track
|
||||
// their own `launched` states.
|
||||
c.launchResolvers()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user