stateroot: make it shutdown properly, not locking up whole system

This commit is contained in:
Roman Khimov 2021-04-02 11:38:49 +03:00
parent 863b9550e6
commit 4d0cbebb5a

View file

@ -17,6 +17,7 @@ func (s *service) Run() {
} }
func (s *service) run() { func (s *service) run() {
runloop:
for { for {
select { select {
case b := <-s.blockCh: case b := <-s.blockCh:
@ -27,13 +28,22 @@ func (s *service) run() {
s.log.Error("can't sign or send state root", zap.Error(err)) s.log.Error("can't sign or send state root", zap.Error(err))
} }
case <-s.done: case <-s.done:
return break runloop
}
}
drainloop:
for {
select {
case <-s.blockCh:
default:
break drainloop
} }
} }
} }
// Shutdown stops the service. // Shutdown stops the service.
func (s *service) Shutdown() { func (s *service) Shutdown() {
s.chain.UnsubscribeFromBlocks(s.blockCh)
close(s.done) close(s.done)
} }