public async Task StopAsync(ExitType exitType) { if (_logger.IsInfo) _logger.Info("Shutting down..."); _runnerCancellation.Cancel(); if (_logger.IsInfo) _logger.Info("Stopping rlpx peer..."); var rlpxPeerTask = _rlpxPeer?.Shutdown() ?? Task.CompletedTask; if (_logger.IsInfo) _logger.Info("Stopping peer manager..."); var peerManagerTask = _peerManager?.StopAsync(exitType) ?? Task.CompletedTask; if (_logger.IsInfo) _logger.Info("Stopping sync manager..."); var syncManagerTask = _syncManager?.StopAsync() ?? Task.CompletedTask; if (_logger.IsInfo) _logger.Info("Stopping block producer..."); var blockProducerTask = _blockProducer?.StopAsync() ?? Task.CompletedTask; if (_logger.IsInfo) _logger.Info("Stopping blockchain processor..."); var blockchainProcessorTask = (_blockchainProcessor?.StopAsync() ?? Task.CompletedTask); if (_logger.IsInfo) _logger.Info("Stopping discovery app..."); var discoveryStopTask = _discoveryApp?.StopAsync() ?? Task.CompletedTask; await Task.WhenAll(discoveryStopTask, rlpxPeerTask, peerManagerTask, syncManagerTask, blockchainProcessorTask, blockProducerTask); if (_logger.IsInfo) _logger.Info("Closing DBs..."); _dbProvider.Dispose(); if (_logger.IsInfo) _logger.Info("Ethereum shutdown complete... please wait for all components to close"); }
public async Task StopAsync() { await _eth2BlockProducer.StopAsync(); if (_poSSwitcher.HasEverReachedTerminalBlock() && HasPreMergeProducer) { await _preMergeProducer !.StopAsync(); } }
private async Task AssertIsProducingBlocks(IBlockProducer blockProducer) { Assert.AreEqual(false, blockProducer.IsProducingBlocks(null)); blockProducer.Start(); Assert.AreEqual(true, blockProducer.IsProducingBlocks(null)); Thread.Sleep(5000); Assert.AreEqual(false, blockProducer.IsProducingBlocks(1)); Assert.AreEqual(true, blockProducer.IsProducingBlocks(1000)); Assert.AreEqual(true, blockProducer.IsProducingBlocks(null)); await blockProducer.StopAsync(); Assert.AreEqual(false, blockProducer.IsProducingBlocks(null)); }
public Task StopAsync() { _blockProductionTrigger.TriggerBlockProduction -= OnBlockProduction; IList <Task> stopTasks = new List <Task>(); for (int index = 0; index < _blockProducers.Length; index++) { IBlockProducer blockProducer = _blockProducers[index].BlockProducer; stopTasks.Add(blockProducer.StopAsync()); } return(Task.WhenAll(stopTasks)); }
public async Task StopAsync() { if (_logger.IsInfo) { _logger.Info("Shutting down..."); } _runnerCancellation.Cancel(); if (_logger.IsInfo) { _logger.Info("Stopping rlpx peer..."); } var rlpxPeerTask = _rlpxPeer?.Shutdown() ?? Task.CompletedTask; if (_logger.IsInfo) { _logger.Info("Stopping sesison monitor..."); } _sessionMonitor?.Stop(); if (_logger.IsInfo) { _logger.Info("Stopping peer manager..."); } var peerManagerTask = _peerManager?.StopAsync() ?? Task.CompletedTask; if (_logger.IsInfo) { _logger.Info("Stopping synchronizer..."); } var synchronizerTask = (_synchronizer?.StopAsync() ?? Task.CompletedTask) .ContinueWith(t => _synchronizer?.Dispose()); if (_logger.IsInfo) { _logger.Info("Stopping sync peer pool..."); } var peerPoolTask = _syncPeerPool?.StopAsync() ?? Task.CompletedTask; if (_logger.IsInfo) { _logger.Info("Stopping block producer..."); } var blockProducerTask = _blockProducer?.StopAsync() ?? Task.CompletedTask; if (_logger.IsInfo) { _logger.Info("Stopping blockchain processor..."); } var blockchainProcessorTask = (_blockchainProcessor?.StopAsync() ?? Task.CompletedTask); if (_logger.IsInfo) { _logger.Info("Stopping discovery app..."); } var discoveryStopTask = _discoveryApp?.StopAsync() ?? Task.CompletedTask; await Task.WhenAll(discoveryStopTask, rlpxPeerTask, peerManagerTask, synchronizerTask, peerPoolTask, blockchainProcessorTask, blockProducerTask); if (_logger.IsInfo) { _logger.Info("Closing DBs..."); } _dbProvider.Dispose(); if (_logger.IsInfo) { _logger.Info("Ethereum shutdown complete... please wait for all components to close"); } }
private void OnSwitchHappened(object?sender, EventArgs e) { _preMergeProducer?.StopAsync(); }