Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 21 additions & 8 deletions crates/rollup-boost/src/flashblocks/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ impl FlashblockBuilder {
}

pub fn extend(&mut self, payload: OpFlashblockPayload) -> Result<(), FlashblocksError> {
tracing::debug!(message = "Extending payload", payload_id = %payload.payload_id, index = payload.index, has_base=payload.base.is_some());
tracing::debug!(target: "flashblocks", message = "Extending payload", payload_id = %payload.payload_id, index = payload.index, has_base=payload.base.is_some());

// Validate the index is contiguous
if payload.index != self.flashblocks.len() as u64 {
Expand Down Expand Up @@ -232,7 +232,7 @@ impl FlashblocksService {
}

pub async fn set_current_payload_id(&self, payload_id: PayloadId) {
tracing::debug!(message = "Setting current payload ID", payload_id = %payload_id);
tracing::debug!(target: "flashblocks", message = "Setting current payload ID", payload_id = %payload_id);
*self.current_payload_id.write().await = Some(payload_id);
// Current state won't be useful anymore because chain progressed
*self.best_payload.write().await = FlashblockBuilder::new();
Expand All @@ -243,7 +243,9 @@ impl FlashblocksService {
FlashblocksEngineMessage::OpFlashblockPayload(payload) => {
self.metrics.messages_processed.increment(1);

tracing::debug!(
info!(
target: "flashblocks",
event = "flashblock_received",
message = "Received flashblock payload",
payload_id = %payload.payload_id,
index = payload.index
Expand All @@ -256,6 +258,7 @@ impl FlashblocksService {
if payload_id != payload.payload_id {
self.metrics.current_payload_id_mismatch.increment(1);
error!(
target: "flashblocks",
message = "Payload ID mismatch",
payload_id = %payload.payload_id,
local_payload_id = %payload_id,
Expand All @@ -267,6 +270,7 @@ impl FlashblocksService {
None => {
// We haven't served FCU with attributes yet, just ignore flashblocks
debug!(
target: "flashblocks",
message = "Received flashblocks, but no FCU with attributes was sent",
payload_id = %payload.payload_id,
index = payload.index,
Expand All @@ -278,6 +282,7 @@ impl FlashblocksService {
if let Err(e) = self.best_payload.write().await.extend(payload.clone()) {
self.metrics.extend_payload_errors.increment(1);
error!(
target: "flashblocks",
message = "Failed to extend payload",
error = %e,
payload_id = %payload.payload_id,
Expand All @@ -287,6 +292,7 @@ impl FlashblocksService {
// Broadcast the valid message
if let Err(e) = self.ws_pub.publish(&payload) {
error!(
target: "flashblocks",
message = "Failed to broadcast payload",
error = %e,
payload_id = %payload.payload_id,
Expand Down Expand Up @@ -328,16 +334,17 @@ impl EngineApiExt for FlashblocksService {
let current_payload = *self.current_payload_id.read().await;
if current_payload != Some(payload_id) {
tracing::error!(
target: "flashblocks",
message = "Payload id returned by builder differs from calculated. Using builder payload id",
builder_payload_id = %payload_id,
calculated_payload_id = %current_payload.unwrap_or_default(),
);
self.set_current_payload_id(payload_id).await;
} else {
tracing::debug!(message = "Forkchoice updated", payload_id = %payload_id);
tracing::debug!(target: "flashblocks", message = "Forkchoice updated", payload_id = %payload_id);
}
} else {
tracing::debug!(message = "Forkchoice updated with no payload ID");
tracing::debug!(target: "flashblocks", message = "Forkchoice updated with no payload ID");
}
Ok(resp)
}
Expand All @@ -355,12 +362,18 @@ impl EngineApiExt for FlashblocksService {

match self.get_best_payload(version, payload_id).await {
Ok(payload) => {
info!(message = "Returning fb payload");
info!(
target: "flashblocks",
event = "payload_returned",
message = "Returning fb payload",
%payload_id,
);
// This will finalise block building in builder.
let client = self.client.clone();
tokio::spawn(async move {
if let Err(e) = client.get_payload(payload_id, version).await {
error!(
target: "flashblocks",
message = "Failed to send finalising getPayload to builder",
error = %e,
);
Expand All @@ -369,8 +382,8 @@ impl EngineApiExt for FlashblocksService {
Ok(payload)
}
Err(e) => {
error!(message = "Error getting fb best payload, falling back on client", error = %e);
info!(message = "Falling back to get_payload on client", payload_id = %payload_id);
error!(target: "flashblocks", message = "Error getting fb best payload, falling back on client", error = %e);
info!(target: "flashblocks", message = "Falling back to get_payload on client", payload_id = %payload_id);
let result = self.client.get_payload(payload_id, version).await?;
Ok(result)
}
Expand Down
18 changes: 16 additions & 2 deletions crates/rollup-boost/src/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,8 @@ impl<T: EngineApiExt> RollupBoostServer<T> {

let execution_payload = ExecutionPayload::from(payload.clone());
info!(
target: "server",
event = "payload_returned",
message = "returning block",
"hash" = %execution_payload.block_hash(),
"number" = %execution_payload.block_number(),
Expand Down Expand Up @@ -377,6 +379,8 @@ impl<T: EngineApiExt> RollupBoostServer<T> {
// While not ideal to rely on log parsing, it provides a reliable way to verify behavior.
// Happy to consider an alternative approach later on.
info!(
target: "server",
event = "payload_returned",
message = "returning block",
"hash" = %block_hash,
"number" = %block_number,
Expand Down Expand Up @@ -648,7 +652,12 @@ impl<T: EngineApiExt> EngineApiServer for RollupBoostServer<T> {
&self,
payload_id: PayloadId,
) -> RpcResult<OpExecutionPayloadEnvelopeV3> {
info!("received get_payload_v3");
info!(
target: "server",
event = "get_payload_received",
message = "received get_payload_v3",
%payload_id,
);

match self.get_payload(payload_id, PayloadVersion::V3).await? {
OpExecutionPayloadEnvelope::V3(v3) => Ok(v3),
Expand Down Expand Up @@ -698,7 +707,12 @@ impl<T: EngineApiExt> EngineApiServer for RollupBoostServer<T> {
&self,
payload_id: PayloadId,
) -> RpcResult<OpExecutionPayloadEnvelopeV4> {
info!("received get_payload_v4");
info!(
target: "server",
event = "get_payload_received",
message = "received get_payload_v4",
%payload_id,
);

match self.get_payload(payload_id, PayloadVersion::V4).await? {
OpExecutionPayloadEnvelope::V4(v4) => Ok(v4),
Expand Down
Loading