Skip to content

Commit 6aa6292

Browse files
committed
Always retry connection for flashblocks receiver stream
1 parent a78f00d commit 6aa6292

File tree

1 file changed

+29
-14
lines changed

1 file changed

+29
-14
lines changed

crates/rollup-boost/src/flashblocks/inbound.rs

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -69,21 +69,36 @@ impl FlashblocksReceiverService {
6969

7070
pub async fn run(self) {
7171
let mut backoff = self.websocket_config.backoff();
72+
info!("FlashblocksReceiverService starting reconnection loop");
7273
loop {
73-
if let Err(e) = self.connect_and_handle(&mut backoff).await {
74-
let interval = backoff
75-
.next_backoff()
76-
.expect("max_elapsed_time not set, never None");
77-
error!(
78-
"Flashblocks receiver connection error, retrying in {}ms: {}",
79-
interval.as_millis(),
80-
e
81-
);
82-
self.metrics.reconnect_attempts.increment(1);
83-
self.metrics.connection_status.set(0);
84-
tokio::time::sleep(interval).await;
85-
} else {
86-
break;
74+
match self.connect_and_handle(&mut backoff).await {
75+
Err(e) => {
76+
// Get next backoff interval, or use max if None (defensive)
77+
let interval = backoff
78+
.next_backoff()
79+
.unwrap_or_else(|| {
80+
error!("Backoff returned None despite max_elapsed_time=None, using max_interval as fallback");
81+
self.websocket_config.max_interval()
82+
});
83+
error!(
84+
"Flashblocks receiver connection error, retrying in {}ms: {}",
85+
interval.as_millis(),
86+
e
87+
);
88+
self.metrics.reconnect_attempts.increment(1);
89+
self.metrics.connection_status.set(0);
90+
tokio::time::sleep(interval).await;
91+
}
92+
Ok(()) => {
93+
// This should never happen - connect_and_handle should loop forever
94+
// or return an error. If we get here, reconnect immediately.
95+
error!(
96+
"Flashblocks receiver connection ended unexpectedly with Ok(()), this should never happen. Reconnecting immediately."
97+
);
98+
self.metrics.reconnect_attempts.increment(1);
99+
self.metrics.connection_status.set(0);
100+
// Reconnect immediately without delay since this is unexpected
101+
}
87102
}
88103
}
89104
}

0 commit comments

Comments
 (0)