diff --git a/beacon-chain/p2p/service.go b/beacon-chain/p2p/service.go index f1d0f30d0d..7969a7a49a 100644 --- a/beacon-chain/p2p/service.go +++ b/beacon-chain/p2p/service.go @@ -370,15 +370,18 @@ func (s *Service) awaitStateInitialized() { stateChannel := make(chan *feed.Event, 1) stateSub := s.stateNotifier.StateFeed().Subscribe(stateChannel) defer stateSub.Unsubscribe() - for event := range stateChannel { - if event.Type == statefeed.Initialized { - data, ok := event.Data.(*statefeed.InitializedData) - if !ok { - log.Fatalf("Received wrong data over state initialized feed: %v", data) + for { + select { + case event := <-stateChannel: + if event.Type == statefeed.Initialized { + data, ok := event.Data.(*statefeed.InitializedData) + if !ok { + log.Fatalf("Received wrong data over state initialized feed: %v", data) + } + s.genesisTime = data.StartTime + s.genesisValidatorsRoot = data.GenesisValidatorsRoot + return } - s.genesisTime = data.StartTime - s.genesisValidatorsRoot = data.GenesisValidatorsRoot - return } } } diff --git a/beacon-chain/powchain/log_processing_test.go b/beacon-chain/powchain/log_processing_test.go index 578b1cc208..771ac2505b 100644 --- a/beacon-chain/powchain/log_processing_test.go +++ b/beacon-chain/powchain/log_processing_test.go @@ -362,9 +362,11 @@ func TestProcessETH2GenesisLog(t *testing.T) { // Receive the chain started event. for started := false; !started; { - event := <-stateChannel - if event.Type == statefeed.ChainStarted { - started = true + select { + case event := <-stateChannel: + if event.Type == statefeed.ChainStarted { + started = true + } } } @@ -455,9 +457,11 @@ func TestProcessETH2GenesisLog_CorrectNumOfDeposits(t *testing.T) { // Receive the chain started event. for started := false; !started; { - event := <-stateChannel - if event.Type == statefeed.ChainStarted { - started = true + select { + case event := <-stateChannel: + if event.Type == statefeed.ChainStarted { + started = true + } } } diff --git a/beacon-chain/sync/initial-sync/blocks_fetcher_test.go b/beacon-chain/sync/initial-sync/blocks_fetcher_test.go index 2df69ddda5..bebc5342d6 100644 --- a/beacon-chain/sync/initial-sync/blocks_fetcher_test.go +++ b/beacon-chain/sync/initial-sync/blocks_fetcher_test.go @@ -279,23 +279,28 @@ func TestBlocksFetcher_RoundRobin(t *testing.T) { defer cancel() var unionRespBlocks []*eth.SignedBeaconBlock - for resp := range fetcher.requestResponses() { - if resp.err != nil { - log.WithError(resp.err).Debug("Block fetcher returned error") - } else { - unionRespBlocks = append(unionRespBlocks, resp.blocks...) - if len(resp.blocks) == 0 { - log.WithFields(logrus.Fields{ - "start": resp.start, - "count": resp.count, - }).Debug("Received empty slot") + for { + select { + case resp, ok := <-fetcher.requestResponses(): + if !ok { // channel closed, aggregate + return unionRespBlocks, nil } + + if resp.err != nil { + log.WithError(resp.err).Debug("Block fetcher returned error") + } else { + unionRespBlocks = append(unionRespBlocks, resp.blocks...) + if len(resp.blocks) == 0 { + log.WithFields(logrus.Fields{ + "start": resp.start, + "count": resp.count, + }).Debug("Received empty slot") + } + } + + wg.Done() } - - wg.Done() } - - return unionRespBlocks, nil } maxExpectedBlocks := uint64(0) diff --git a/tools/forkchecker/forkchecker.go b/tools/forkchecker/forkchecker.go index 62db877676..b8ea409a23 100644 --- a/tools/forkchecker/forkchecker.go +++ b/tools/forkchecker/forkchecker.go @@ -54,11 +54,14 @@ func main() { ticker := time.NewTicker(time.Duration(params.BeaconConfig().SecondsPerSlot) * time.Second) go func() { - for range ticker.C { - if *compare { - compareHeads(clients) - } else { - displayHeads(clients) + for { + select { + case <-ticker.C: + if *compare { + compareHeads(clients) + } else { + displayHeads(clients) + } } } }()