From 08122bc1ead005f62c3e1c1fcff4ce23227e39f9 Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Fri, 30 Jan 2026 15:31:27 +0100 Subject: [PATCH] perf: use biased select and prioritize engine events (#21556) Co-authored-by: Amp --- crates/node/builder/src/launch/engine.rs | 30 +++++++++++++----------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/crates/node/builder/src/launch/engine.rs b/crates/node/builder/src/launch/engine.rs index 319aa7a1ac..015a28c8ba 100644 --- a/crates/node/builder/src/launch/engine.rs +++ b/crates/node/builder/src/launch/engine.rs @@ -303,20 +303,8 @@ impl EngineNodeLauncher { // the CL loop { tokio::select! { - shutdown_req = &mut shutdown_rx => { - if let Ok(req) = shutdown_req { - debug!(target: "reth::cli", "received engine shutdown request"); - engine_service.orchestrator_mut().handler_mut().handler_mut().on_event( - FromOrchestrator::Terminate { tx: req.done_tx }.into() - ); - } - } - payload = built_payloads.select_next_some() => { - if let Some(executed_block) = payload.executed_block() { - debug!(target: "reth::cli", block=?executed_block.recovered_block.num_hash(), "inserting built payload"); - engine_service.orchestrator_mut().handler_mut().handler_mut().on_event(EngineApiRequest::InsertExecutedBlock(executed_block.into_executed_payload()).into()); - } - } + biased; + event = engine_service.next() => { let Some(event) = event else { break }; debug!(target: "reth::cli", "Event: {event}"); @@ -364,6 +352,20 @@ impl EngineNodeLauncher { } } } + payload = built_payloads.select_next_some() => { + if let Some(executed_block) = payload.executed_block() { + debug!(target: "reth::cli", block=?executed_block.recovered_block.num_hash(), "inserting built payload"); + engine_service.orchestrator_mut().handler_mut().handler_mut().on_event(EngineApiRequest::InsertExecutedBlock(executed_block.into_executed_payload()).into()); + } + } + shutdown_req = &mut shutdown_rx => { + if let Ok(req) = shutdown_req { + debug!(target: "reth::cli", "received engine shutdown request"); + engine_service.orchestrator_mut().handler_mut().handler_mut().on_event( + FromOrchestrator::Terminate { tx: req.done_tx }.into() + ); + } + } } }