Skip to content

eth/backend_mining_pow.go — Version Comparison

v1.16.8 v1.17.3
Branch etc/v1.16.8-full-node etc/v1.17.3-full-node
Delta +158 -0 +149 -0

Diff between branches

diff --git a/eth/backend_mining_pow.go b/eth/backend_mining_pow.go
index 765b1c0b3..b32e72cd1 100644
--- a/eth/backend_mining_pow.go
+++ b/eth/backend_mining_pow.go
@@ -107,48 +107,39 @@ func (s *Ethereum) SetEtherbase(addr common.Address) {
 // This is placed in the eth package (instead of miner) to avoid an import cycle
 // between miner and eth/downloader.
 func (s *Ethereum) minerUpdate() {
-   events := s.eventMux.Subscribe(downloader.StartEvent{}, downloader.DoneEvent{}, downloader.FailedEvent{})
-   defer func() {
-       if !events.Closed() {
-           events.Unsubscribe()
-       }
-   }()
+   eventCh := make(chan downloader.SyncEvent, 16)
+   sub := s.handler.downloader.SubscribeSyncEvents(eventCh)
+   defer sub.Unsubscribe()

    shouldStart := false
-   dlEventCh := events.Chan()
-
    for {
        select {
-       case ev := <-dlEventCh:
-           if ev == nil {
-               dlEventCh = nil
-               continue
-           }
-           switch ev.Data.(type) {
-           case downloader.StartEvent:
+       case ev := <-eventCh:
+           switch ev.Type {
+           case downloader.SyncStarted:
                if s.IsMining() {
                    s.miner.StopMining()
                    shouldStart = true
                }
                s.miner.SetSyncing(true)

-           case downloader.FailedEvent:
+           case downloader.SyncFailed:
                if shouldStart {
                    s.miner.StartMining()
                }
                s.miner.SetSyncing(false)
                // Stop reacting to downloader events (one-shot security measure)
-               events.Unsubscribe()
-               dlEventCh = nil
+               sub.Unsubscribe()
+               eventCh = nil

-           case downloader.DoneEvent:
+           case downloader.SyncCompleted:
                if shouldStart {
                    s.miner.StartMining()
                }
                s.miner.SetSyncing(false)
                // Stop reacting to downloader events (one-shot security measure)
-               events.Unsubscribe()
-               dlEventCh = nil
+               sub.Unsubscribe()
+               eventCh = nil
            }

        case <-s.miner.ExitCh():
← Back to Version Comparison