From b3c8280321ed97defe5107dd73f9529698c84ef9 Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Sat, 20 Jul 2024 15:29:20 +0200 Subject: [PATCH] feat: integrate event handling (#9666) --- crates/ethereum/engine/src/service.rs | 5 ++++- crates/ethereum/node/src/launch.rs | 14 +++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/crates/ethereum/engine/src/service.rs b/crates/ethereum/engine/src/service.rs index 89c73f640b..d66ad63f5d 100644 --- a/crates/ethereum/engine/src/service.rs +++ b/crates/ethereum/engine/src/service.rs @@ -5,12 +5,15 @@ use reth_chainspec::ChainSpec; use reth_db_api::database::Database; use reth_engine_tree::{ backfill::PipelineSync, - chain::{ChainEvent, ChainOrchestrator}, download::BasicBlockDownloader, engine::{EngineApiRequestHandler, EngineHandler}, persistence::PersistenceHandle, tree::EngineApiTreeHandlerImpl, }; +pub use reth_engine_tree::{ + chain::{ChainEvent, ChainOrchestrator}, + engine::EngineApiEvent, +}; use reth_ethereum_engine_primitives::EthEngineTypes; use reth_evm_ethereum::execute::EthExecutorProvider; use reth_network_p2p::{bodies::client::BodiesClient, headers::client::HeadersClient}; diff --git a/crates/ethereum/node/src/launch.rs b/crates/ethereum/node/src/launch.rs index db310d179d..143009fce8 100644 --- a/crates/ethereum/node/src/launch.rs +++ b/crates/ethereum/node/src/launch.rs @@ -5,7 +5,7 @@ use reth_beacon_consensus::{ hooks::{EngineHooks, StaticFileHook}, BeaconConsensusEngineHandle, }; -use reth_ethereum_engine::service::EthService; +use reth_ethereum_engine::service::{ChainEvent, EthService}; use reth_ethereum_engine_primitives::EthEngineTypes; use reth_exex::ExExManagerHandle; use reth_network::NetworkEvents; @@ -174,7 +174,7 @@ where let event_sender = EventSender::default(); let beacon_engine_handle = - BeaconConsensusEngineHandle::new(consensus_engine_tx, event_sender); + BeaconConsensusEngineHandle::new(consensus_engine_tx, event_sender.clone()); info!(target: "reth::cli", "Consensus engine initialized"); @@ -237,8 +237,16 @@ where let (tx, rx) = oneshot::channel(); info!(target: "reth::cli", "Starting consensus engine"); ctx.task_executor().spawn_critical_blocking("consensus engine", async move { + // advance the chain and handle events while let Some(event) = eth_service.next().await { - info!(target: "reth::cli", "Event: {event:?}"); + debug!(target: "reth::cli", "Event: {event:?}"); + match event { + ChainEvent::BackfillSyncFinished | ChainEvent::BackfillSyncStarted => {} + ChainEvent::FatalError => break, + ChainEvent::Handler(ev) => { + event_sender.notify(ev); + } + } } let _ = tx.send(()); });