From 4d0cbebb5af16759a7b9e8a2da2a39e0a1146dee Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Fri, 2 Apr 2021 11:38:49 +0300 Subject: [PATCH] stateroot: make it shutdown properly, not locking up whole system --- pkg/services/stateroot/validators.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/services/stateroot/validators.go b/pkg/services/stateroot/validators.go index 3a56041c4..a598f3529 100644 --- a/pkg/services/stateroot/validators.go +++ b/pkg/services/stateroot/validators.go @@ -17,6 +17,7 @@ func (s *service) Run() { } func (s *service) run() { +runloop: for { select { 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)) } case <-s.done: - return + break runloop + } + } +drainloop: + for { + select { + case <-s.blockCh: + default: + break drainloop } } } // Shutdown stops the service. func (s *service) Shutdown() { + s.chain.UnsubscribeFromBlocks(s.blockCh) close(s.done) }