aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWei-Ning Huang <w@dexon.org>2019-03-17 20:14:41 +0800
committerWei-Ning Huang <w@dexon.org>2019-04-09 21:32:58 +0800
commit1dd5b9705268cc22bf70ba16a8becb02b4148e86 (patch)
tree3d2fd881ee37d6bbed2bf11267c61a9c44b1dd5d
parentb6fdd2f5fa7c09fc7af0dfef15300161e5dedc1e (diff)
downloaddexon-1dd5b9705268cc22bf70ba16a8becb02b4148e86.tar.gz
dexon-1dd5b9705268cc22bf70ba16a8becb02b4148e86.tar.zst
dexon-1dd5b9705268cc22bf70ba16a8becb02b4148e86.zip
dex: properly shutdown protocol stack (#267)
-rw-r--r--dex/backend.go11
-rw-r--r--dex/blockproposer.go3
-rw-r--r--dex/handler.go4
3 files changed, 12 insertions, 6 deletions
diff --git a/dex/backend.go b/dex/backend.go
index e90c3ad10..f1b0012a2 100644
--- a/dex/backend.go
+++ b/dex/backend.go
@@ -259,14 +259,19 @@ func (s *Dexon) Start(srvr *p2p.Server) error {
}
func (s *Dexon) Stop() error {
+ s.bloomIndexer.Close()
+ s.blockchain.Stop()
+ s.engine.Close()
+ s.protocolManager.Stop()
+ s.txPool.Stop()
+ s.eventMux.Stop()
s.bp.Stop()
s.app.Stop()
if s.indexer != nil {
s.indexer.Stop()
}
- if s.config.BlockProposerEnabled {
- s.bp.Stop()
- }
+ s.chainDb.Close()
+ close(s.shutdownChan)
return nil
}
diff --git a/dex/blockproposer.go b/dex/blockproposer.go
index 6c1de818a..58e6eafee 100644
--- a/dex/blockproposer.go
+++ b/dex/blockproposer.go
@@ -79,10 +79,10 @@ func (b *blockProposer) run(c *dexCore.Consensus) {
atomic.StoreInt32(&b.proposing, 1)
<-b.stopCh
log.Debug("Block proposer receive stop signal")
- c.Stop()
}
func (b *blockProposer) Stop() {
+ log.Info("Stopping block proposer")
b.mu.Lock()
defer b.mu.Unlock()
@@ -92,6 +92,7 @@ func (b *blockProposer) Stop() {
b.wg.Wait()
atomic.StoreInt32(&b.proposing, 0)
}
+ log.Info("Block proposer stopped")
}
func (b *blockProposer) IsCoreSyncing() bool {
diff --git a/dex/handler.go b/dex/handler.go
index 91d7360b2..e887d54d9 100644
--- a/dex/handler.go
+++ b/dex/handler.go
@@ -305,7 +305,7 @@ func (pm *ProtocolManager) Start(srvr p2pServer, maxPeers int) {
}
func (pm *ProtocolManager) Stop() {
- log.Info("Stopping Ethereum protocol")
+ log.Info("Stopping DEXON protocol")
pm.txsSub.Unsubscribe() // quits txBroadcastLoop
pm.chainHeadSub.Unsubscribe()
@@ -330,7 +330,7 @@ func (pm *ProtocolManager) Stop() {
// Wait for all peer handler goroutines and the loops to come down.
pm.wg.Wait()
- log.Info("Ethereum protocol stopped")
+ log.Info("DEXON protocol stopped")
}
func (pm *ProtocolManager) ReceiveChan() <-chan interface{} {