From 6aea07105a2617ebb7e2bbf03bd6b2d6f974af25 Mon Sep 17 00:00:00 2001 From: Miguel Date: Thu, 25 Jul 2024 10:49:17 -0300 Subject: [PATCH] FatalError in EngineHandlerEvent (#9800) Co-authored-by: Matthias Seitz --- crates/engine/tree/src/chain.rs | 7 +++++++ crates/engine/tree/src/engine.rs | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/crates/engine/tree/src/chain.rs b/crates/engine/tree/src/chain.rs index 10a19776fd..e77139d3e3 100644 --- a/crates/engine/tree/src/chain.rs +++ b/crates/engine/tree/src/chain.rs @@ -5,6 +5,7 @@ use std::{ pin::Pin, task::{Context, Poll}, }; +use tracing::*; /// The type that drives the chain forward. /// @@ -121,6 +122,10 @@ where // bubble up the event return Poll::Ready(ChainEvent::Handler(ev)); } + HandlerEvent::FatalError => { + error!(target: "engine::tree", "Fatal error"); + return Poll::Ready(ChainEvent::FatalError) + } } } Poll::Pending => { @@ -190,6 +195,8 @@ pub enum HandlerEvent { BackfillAction(BackfillAction), /// Other event emitted by the handler Event(T), + // Fatal error + FatalError, } /// Internal events issued by the [`ChainOrchestrator`]. diff --git a/crates/engine/tree/src/engine.rs b/crates/engine/tree/src/engine.rs index eeac5e5d75..bd4c220565 100644 --- a/crates/engine/tree/src/engine.rs +++ b/crates/engine/tree/src/engine.rs @@ -84,6 +84,7 @@ where // bubble up the event Poll::Ready(HandlerEvent::Event(ev)) } + HandlerEvent::FatalError => Poll::Ready(HandlerEvent::FatalError), } } RequestHandlerEvent::Download(req) => { @@ -186,7 +187,10 @@ where } fn poll(&mut self, cx: &mut Context<'_>) -> Poll> { - let Some(ev) = ready!(self.from_tree.poll_recv(cx)) else { return Poll::Pending }; + let Some(ev) = ready!(self.from_tree.poll_recv(cx)) else { + return Poll::Ready(RequestHandlerEvent::HandlerEvent(HandlerEvent::FatalError)) + }; + let ev = match ev { EngineApiEvent::BeaconConsensus(ev) => { RequestHandlerEvent::HandlerEvent(HandlerEvent::Event(ev))