From 1eea827f3d6a12351db39c90d24701cd81aec975 Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Thu, 18 Jul 2024 17:49:47 +1000 Subject: [PATCH 1/3] Return syncing even when sync is stalled --- beacon_node/http_api/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon_node/http_api/src/lib.rs b/beacon_node/http_api/src/lib.rs index 2d50dc6c635..cec5ff621cd 100644 --- a/beacon_node/http_api/src/lib.rs +++ b/beacon_node/http_api/src/lib.rs @@ -2888,7 +2888,7 @@ pub fn serve( .map_err(warp_utils::reject::beacon_chain_error)?; let syncing_data = api_types::SyncingData { - is_syncing: network_globals.sync_state.read().is_syncing(), + is_syncing: !network_globals.sync_state.read().is_synced(), is_optimistic: Some(is_optimistic), el_offline: Some(el_offline), head_slot, From 6dad13de781b35c81110a7e6a7acfaaba3811bf7 Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Fri, 19 Jul 2024 10:54:34 +1000 Subject: [PATCH 2/3] Add test --- beacon_node/http_api/tests/tests.rs | 42 ++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/beacon_node/http_api/tests/tests.rs b/beacon_node/http_api/tests/tests.rs index 633baaf6f40..0733b60f7d5 100644 --- a/beacon_node/http_api/tests/tests.rs +++ b/beacon_node/http_api/tests/tests.rs @@ -23,7 +23,7 @@ use http_api::{ test_utils::{create_api_server, ApiServer}, BlockId, StateId, }; -use lighthouse_network::{Enr, EnrExt, PeerId}; +use lighthouse_network::{types::SyncState, Enr, EnrExt, PeerId}; use network::NetworkReceivers; use proto_array::ExecutionStatus; use sensitive_url::SensitiveUrl; @@ -62,6 +62,7 @@ const SKIPPED_SLOTS: &[u64] = &[ ]; struct ApiTester { + ctx: Arc>>, harness: Arc>>, chain: Arc>>, client: BeaconNodeHttpClient, @@ -253,7 +254,7 @@ impl ApiTester { let log = null_logger().unwrap(); let ApiServer { - ctx: _, + ctx, server, listening_socket, network_rx, @@ -284,6 +285,7 @@ impl ApiTester { ); Self { + ctx, harness: Arc::new(harness), chain, client, @@ -350,7 +352,7 @@ impl ApiTester { let log = null_logger().unwrap(); let ApiServer { - ctx: _, + ctx, server, listening_socket, network_rx, @@ -371,6 +373,7 @@ impl ApiTester { ); Self { + ctx, harness, chain, client, @@ -2168,6 +2171,37 @@ impl ApiTester { self } + pub async fn test_get_node_syncing_stalled(self) -> Self { + // Set sync status to stalled. + *self + .ctx + .network_globals + .as_ref() + .unwrap() + .sync_state + .write() = SyncState::Stalled; + + let is_syncing = self + .client + .get_node_syncing() + .await + .unwrap() + .data + .is_syncing; + assert_eq!(is_syncing, true); + + // Reset sync state. + *self + .ctx + .network_globals + .as_ref() + .unwrap() + .sync_state + .write() = SyncState::Synced; + + self + } + pub async fn test_get_node_identity(self) -> Self { let result = self.client.get_node_identity().await.unwrap().data; @@ -6123,6 +6157,8 @@ async fn node_get() { .await .test_get_node_syncing() .await + .test_get_node_syncing_stalled() + .await .test_get_node_identity() .await .test_get_node_health() From eb65fc0c09f57197958209df70d10b8d03d79c4f Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Fri, 19 Jul 2024 12:09:54 +1000 Subject: [PATCH 3/3] Fix `target_peer` config for basic_sim, so a node doesn't disconnected by peers because of `TooManyPeers`. --- testing/simulator/src/basic_sim.rs | 3 +++ testing/simulator/src/fallback_sim.rs | 1 + testing/simulator/src/local_network.rs | 3 ++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/testing/simulator/src/basic_sim.rs b/testing/simulator/src/basic_sim.rs index f69d107e344..46196ba2b10 100644 --- a/testing/simulator/src/basic_sim.rs +++ b/testing/simulator/src/basic_sim.rs @@ -37,6 +37,8 @@ pub fn run_basic_sim(matches: &ArgMatches) -> Result<(), String> { .unwrap_or(&String::from("0")) .parse::() .unwrap_or(0); + // extra beacon node added with delay + let extra_nodes: usize = 1; println!("PROPOSER-NODES: {}", proposer_nodes); let validators_per_node = matches .get_one::("validators-per-node") @@ -133,6 +135,7 @@ pub fn run_basic_sim(matches: &ArgMatches) -> Result<(), String> { LocalNetworkParams { validator_count: total_validator_count, node_count, + extra_nodes, proposer_nodes, genesis_delay, }, diff --git a/testing/simulator/src/fallback_sim.rs b/testing/simulator/src/fallback_sim.rs index 33f497f37ff..73984aadad7 100644 --- a/testing/simulator/src/fallback_sim.rs +++ b/testing/simulator/src/fallback_sim.rs @@ -143,6 +143,7 @@ pub fn run_fallback_sim(matches: &ArgMatches) -> Result<(), String> { LocalNetworkParams { validator_count: total_validator_count, node_count, + extra_nodes: 0, proposer_nodes: 0, genesis_delay, }, diff --git a/testing/simulator/src/local_network.rs b/testing/simulator/src/local_network.rs index 63f2ec93537..faf3246e0d7 100644 --- a/testing/simulator/src/local_network.rs +++ b/testing/simulator/src/local_network.rs @@ -27,6 +27,7 @@ pub struct LocalNetworkParams { pub validator_count: usize, pub node_count: usize, pub proposer_nodes: usize, + pub extra_nodes: usize, pub genesis_delay: u64, } @@ -38,7 +39,7 @@ fn default_client_config(network_params: LocalNetworkParams, genesis_time: u64) genesis_time, }; beacon_config.network.target_peers = - network_params.node_count + network_params.proposer_nodes - 1; + network_params.node_count + network_params.proposer_nodes + network_params.extra_nodes - 1; beacon_config.network.enr_address = (Some(Ipv4Addr::LOCALHOST), None); beacon_config.network.enable_light_client_server = true; beacon_config.network.discv5_config.enable_packet_filter = false;