From 9f5c81db88ed6a6cd3d9fe302b1ac9c43a6a8507 Mon Sep 17 00:00:00 2001 From: File Large Date: Tue, 26 Aug 2025 17:59:44 +0200 Subject: [PATCH 1/3] perf: unlock grpc relay client --- crates/rbuilder/src/live_builder/config.rs | 9 +++------ crates/rbuilder/src/mev_boost/bloxroute_grpc.rs | 4 +--- crates/rbuilder/src/mev_boost/mod.rs | 9 ++++++--- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/crates/rbuilder/src/live_builder/config.rs b/crates/rbuilder/src/live_builder/config.rs index 4188a4659..f9028775e 100644 --- a/crates/rbuilder/src/live_builder/config.rs +++ b/crates/rbuilder/src/live_builder/config.rs @@ -82,7 +82,6 @@ use std::{ sync::Arc, time::Duration, }; -use tokio::sync::Mutex as TokioMutex; use tokio_util::sync::CancellationToken; use tracing::{info, warn}; use url::Url; @@ -279,11 +278,9 @@ impl L1Config { .unwrap_or(DEFAULT_CAN_IGNORE_GAS_LIMIT), ); if let Some(grpc_url) = relay_config.grpc_url.clone() { - let grpc_client = Arc::new(TokioMutex::new( - bloxroute_grpc::types::relay_client::RelayClient::new( - tonic::transport::Endpoint::try_from(grpc_url)?.connect_lazy(), - ), - )); + let grpc_client = bloxroute_grpc::types::relay_client::RelayClient::new( + tonic::transport::Endpoint::try_from(grpc_url)?.connect_lazy(), + ); client = client.with_grpc_client(grpc_client); } Self::create_relay_sub_objects( diff --git a/crates/rbuilder/src/mev_boost/bloxroute_grpc.rs b/crates/rbuilder/src/mev_boost/bloxroute_grpc.rs index fc385b1d6..e51fb18fb 100644 --- a/crates/rbuilder/src/mev_boost/bloxroute_grpc.rs +++ b/crates/rbuilder/src/mev_boost/bloxroute_grpc.rs @@ -11,7 +11,6 @@ use alloy_rpc_types_beacon::{ requests::ExecutionRequestsV4, }; use alloy_rpc_types_engine::{ExecutionPayloadV1, ExecutionPayloadV2, ExecutionPayloadV3}; -use std::sync::Arc; /// Bloxroute gRPC types. pub mod types { @@ -33,8 +32,7 @@ pub enum DataVersion { } /// gRPC relay client type. -pub type GrpcRelayClient = - Arc>>; +pub type GrpcRelayClient = types::relay_client::RelayClient; impl From<&SubmitBlockRequest> for types::SubmitBlockRequest { fn from(value: &SubmitBlockRequest) -> Self { diff --git a/crates/rbuilder/src/mev_boost/mod.rs b/crates/rbuilder/src/mev_boost/mod.rs index a7f17b9fc..b55c0bfd4 100644 --- a/crates/rbuilder/src/mev_boost/mod.rs +++ b/crates/rbuilder/src/mev_boost/mod.rs @@ -643,7 +643,7 @@ impl RelayClient { /// Send gRPC submit block request to bloxroute. async fn call_bloxroute_grpc_submit_block( &self, - client: &GrpcRelayClient, + mut client: GrpcRelayClient, submission_with_metadata: &SubmitBlockRequestWithMetadata, ) -> Result { let mut request = tonic::Request::new(bloxroute_grpc::types::SubmitBlockRequest::from( @@ -673,7 +673,7 @@ impl RelayClient { "na".parse().map_err(|_| SubmitBlockErr::InvalidHeader)?, ); - let response = client.lock().await.submit_block(request).await?; + let response = client.submit_block(request).await?; Ok(response.into_inner()) } @@ -688,7 +688,10 @@ impl RelayClient { ) -> Result<(), SubmitBlockErr> { // If gRPC client is available, attempt to submit with it. if let Some(client) = &self.grpc_client { - match self.call_bloxroute_grpc_submit_block(client, data).await { + match self + .call_bloxroute_grpc_submit_block(client.clone(), data) + .await + { Ok(response) => { let status = response.code.try_into().unwrap_or(u16::MAX); return if status == tonic::Code::Ok as u16 { From 77e6e2f4803fdb809af3d1c3d247cae7f03e5f53 Mon Sep 17 00:00:00 2001 From: Jonas Bostoen Date: Wed, 3 Dec 2025 12:30:33 +0100 Subject: [PATCH 2/3] feat(rbuilder): update gRPC client configuration --- crates/rbuilder/src/live_builder/config.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/crates/rbuilder/src/live_builder/config.rs b/crates/rbuilder/src/live_builder/config.rs index 515844b36..1798b2221 100644 --- a/crates/rbuilder/src/live_builder/config.rs +++ b/crates/rbuilder/src/live_builder/config.rs @@ -301,8 +301,14 @@ impl L1Config { ); if let Some(grpc_url) = relay_config.grpc_url.clone() { let grpc_client = bloxroute_grpc::types::relay_client::RelayClient::new( - tonic::transport::Endpoint::try_from(grpc_url)?.connect_lazy(), + tonic::transport::Endpoint::try_from(grpc_url)? + .keep_alive_while_idle(true) + .keep_alive_timeout(Duration::from_secs(12)) + // Default is 1 KB, a little low for a block. + .buffer_size(8 * 1024) + .connect_lazy(), ); + client = client.with_grpc_client(grpc_client); } Self::create_relay_sub_objects( From d27cc238bb848032aae38db6bac80b9fc30f6862 Mon Sep 17 00:00:00 2001 From: Jonas Bostoen Date: Wed, 3 Dec 2025 12:34:57 +0100 Subject: [PATCH 3/3] feat(rbuilder): update gRPC client configuration --- crates/rbuilder/src/live_builder/config.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/crates/rbuilder/src/live_builder/config.rs b/crates/rbuilder/src/live_builder/config.rs index 1798b2221..5b65ea189 100644 --- a/crates/rbuilder/src/live_builder/config.rs +++ b/crates/rbuilder/src/live_builder/config.rs @@ -304,8 +304,6 @@ impl L1Config { tonic::transport::Endpoint::try_from(grpc_url)? .keep_alive_while_idle(true) .keep_alive_timeout(Duration::from_secs(12)) - // Default is 1 KB, a little low for a block. - .buffer_size(8 * 1024) .connect_lazy(), );