From 862c84cdb0d6d2da2e9695e3e7edd5e9ed07afd6 Mon Sep 17 00:00:00 2001 From: eltitanb Date: Mon, 6 Oct 2025 13:14:39 +0100 Subject: [PATCH 1/2] fallback --- crates/common/src/pbs/error.rs | 4 ++++ crates/pbs/src/mev_boost/submit_block.rs | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/crates/common/src/pbs/error.rs b/crates/common/src/pbs/error.rs index b15a00ba..fdfc45cd 100644 --- a/crates/common/src/pbs/error.rs +++ b/crates/common/src/pbs/error.rs @@ -47,6 +47,10 @@ impl PbsError { _ => false, } } + + pub fn is_not_found(&self) -> bool { + matches!(&self, PbsError::RelayResponse { code: 404, .. }) + } } #[derive(Debug, Error, PartialEq, Eq)] diff --git a/crates/pbs/src/mev_boost/submit_block.rs b/crates/pbs/src/mev_boost/submit_block.rs index 68a3384e..8fc09f03 100644 --- a/crates/pbs/src/mev_boost/submit_block.rs +++ b/crates/pbs/src/mev_boost/submit_block.rs @@ -88,7 +88,7 @@ async fn submit_block_with_timeout( api_version: &BuilderApiVersion, fork_name: ForkName, ) -> Result, PbsError> { - let url = relay.submit_block_url(*api_version)?; + let mut url = relay.submit_block_url(*api_version)?; let mut remaining_timeout_ms = timeout_ms; let mut retry = 0; let mut backoff = Duration::from_millis(250); @@ -121,6 +121,11 @@ async fn submit_block_with_timeout( } } + Err(err) if err.is_not_found() && matches!(api_version, BuilderApiVersion::V2) => { + warn!("relay does not support v2 endpoint, retrying with v1"); + url = relay.submit_block_url(BuilderApiVersion::V1)?; + } + Err(err) => return Err(err), }; @@ -184,6 +189,7 @@ async fn send_submit_block( warn!(relay_id = relay.id.as_ref(), retry, %err, "failed to get payload (this might be ok if other relays have it)"); return Err(err); }; + if api_version != &BuilderApiVersion::V1 { // v2 response is going to be empty, so just break here return Ok(None); From 7aac9ab2b2ad1829bd9bc6a77a21dabd17a1f168 Mon Sep 17 00:00:00 2001 From: eltitanb Date: Mon, 6 Oct 2025 13:46:41 +0100 Subject: [PATCH 2/2] add log --- crates/pbs/src/mev_boost/submit_block.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/crates/pbs/src/mev_boost/submit_block.rs b/crates/pbs/src/mev_boost/submit_block.rs index 8fc09f03..e8d8ea6b 100644 --- a/crates/pbs/src/mev_boost/submit_block.rs +++ b/crates/pbs/src/mev_boost/submit_block.rs @@ -122,7 +122,10 @@ async fn submit_block_with_timeout( } Err(err) if err.is_not_found() && matches!(api_version, BuilderApiVersion::V2) => { - warn!("relay does not support v2 endpoint, retrying with v1"); + warn!( + relay_id = relay.id.as_ref(), + "relay does not support v2 endpoint, retrying with v1" + ); url = relay.submit_block_url(BuilderApiVersion::V1)?; } @@ -192,6 +195,13 @@ async fn send_submit_block( if api_version != &BuilderApiVersion::V1 { // v2 response is going to be empty, so just break here + debug!( + relay_id = relay.id.as_ref(), + retry, + latency = ?request_latency, + "successful request" + ); + return Ok(None); }