From 1f220e4d4db22fb56226b4f42f3e1eb52286d42f Mon Sep 17 00:00:00 2001 From: Grga Date: Wed, 3 Dec 2025 09:31:07 +0100 Subject: [PATCH] Added log if initial peers are invalid --- CHANGELOG.md | 3 +++ node/src/reducer.rs | 27 ++++++++++++++++++- .../network/kad/p2p_network_kad_reducer.rs | 1 + p2p/src/network/kad/p2p_network_kad_state.rs | 2 ++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c8b393624..2e3a95a1df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Dashboard, documenting all endpoints and specific data fields used by the frontend ([#1566](https://github.com/o1-labs/mina-rust/issues/1566)) +- **Feature**: Add logging if initial peers are invalid + ([#1703](https://github.com/o1-labs/mina-rust/pull/1703)) + ### Fixed - **Docker Compose**: Fix frontend black screen issue by changing environment diff --git a/node/src/reducer.rs b/node/src/reducer.rs index 1b358f68de..56e11e5eea 100644 --- a/node/src/reducer.rs +++ b/node/src/reducer.rs @@ -17,7 +17,32 @@ pub fn reducer( let meta = action.meta().clone(); match action.action() { Action::CheckTimeouts(_) => { - if state.p2p.ready().is_some() { + if let Some(p2p) = state.p2p.ready() { + if let Some(kad_state) = &p2p.network.scheduler.discovery_state { + if p2p.ready_peers().is_empty() && kad_state.has_bootstraped { + if let Some(tip) = &state.transition_frontier.best_tip_breadcrumb() { + // TODO: this might need to change in future + if tip.height() == 296372 { + let initial_peers = state + .p2p + .config() + .initial_peers + .iter() + .map(|opts| opts.to_string()) + .collect::>() + .join(", "); + + crate::core::error!( + crate::core::log::system_time(); + summary = "Exiting", + error = "Invalid initial peers", + initial_peers = initial_peers + ); + } + } + } + } + if let Err(error) = P2pState::p2p_timeout_dispatch(Substate::new(state, dispatcher), &meta) { diff --git a/p2p/src/network/kad/p2p_network_kad_reducer.rs b/p2p/src/network/kad/p2p_network_kad_reducer.rs index fb0e78e386..a007fa1afb 100644 --- a/p2p/src/network/kad/p2p_network_kad_reducer.rs +++ b/p2p/src/network/kad/p2p_network_kad_reducer.rs @@ -133,6 +133,7 @@ impl super::P2pNetworkKadState { time: meta.time(), stats: bootstrap_state.stats.clone(), }; + state.has_bootstraped = true; Ok(()) } (_, P2pNetworkKademliaAction::UpdateRoutingTable { peer_id, addrs }) => { diff --git a/p2p/src/network/kad/p2p_network_kad_state.rs b/p2p/src/network/kad/p2p_network_kad_state.rs index 88f70b1168..541aaef538 100644 --- a/p2p/src/network/kad/p2p_network_kad_state.rs +++ b/p2p/src/network/kad/p2p_network_kad_state.rs @@ -60,6 +60,7 @@ pub struct P2pNetworkKadState { pub streams: StreamState, pub status: P2pNetworkKadStatus, pub filter_addrs: bool, + pub has_bootstraped: bool, } impl Default for P2pNetworkKadState { @@ -74,6 +75,7 @@ impl Default for P2pNetworkKadState { .ok() .and_then(|s| s.parse().ok()) .unwrap_or(true), + has_bootstraped: false, } } }