sweep: remove redundant notifications during shutdown

This commit removes the hack introduced in #4851. Previously we had this
issue because the chain notifier was stopped before the sweeper, which
was changed a while back and we now always stop the chain notifier last.
In addition, since we no longer subscribe to the block epoch chan
directly, this issue can no longer happen.
This commit is contained in:
yyforyongyu 2024-11-18 11:09:21 +08:00
parent e113f39d26
commit 3ac6752a77
No known key found for this signature in database
GPG key ID: 9BCD95C4FF296868

View file

@ -454,38 +454,7 @@ func (s *UtxoSweeper) Start() error {
// Start sweeper main loop.
s.wg.Add(1)
go func() {
defer s.wg.Done()
s.collector()
// The collector exited and won't longer handle incoming
// requests. This can happen on shutdown, when the block
// notifier shuts down before the sweeper and its clients. In
// order to not deadlock the clients waiting for their requests
// being handled, we handle them here and immediately return an
// error. When the sweeper finally is shut down we can exit as
// the clients will be notified.
for {
select {
case inp := <-s.newInputs:
inp.resultChan <- Result{
Err: ErrSweeperShuttingDown,
}
case req := <-s.pendingSweepsReqs:
req.errChan <- ErrSweeperShuttingDown
case req := <-s.updateReqs:
req.responseChan <- &updateResp{
err: ErrSweeperShuttingDown,
}
case <-s.quit:
return
}
}
}()
go s.collector()
return nil
}