From bb6862658f4deddb279440bf661aa9083836c2f8 Mon Sep 17 00:00:00 2001 From: viraladmin <00purple@gmail.com> Date: Fri, 10 Jul 2026 08:50:38 -0600 Subject: [PATCH] sync fixes --- src/records/memory/connections.rs | 18 +++++++++++++++++- src/records/memory/network_mapping/add.rs | 14 +------------- .../memory/network_mapping/mined_counts.rs | 2 -- src/rpc/client/handshake_processing.rs | 4 +++- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/records/memory/connections.rs b/src/records/memory/connections.rs index e77fb97..0f5a693 100644 --- a/src/records/memory/connections.rs +++ b/src/records/memory/connections.rs @@ -152,6 +152,13 @@ async fn retry_dropped_outgoing(ip: String, port: u16) { for attempt in 1..=3 { sleep(Duration::from_secs(30)).await; + if Connection::get_stream_from_memory(&addr_string).await.is_some() { + info!( + "[reconnect] dropped peer {addr_string} is already connected; stopping reconnect attempts" + ); + return; + } + let socket_addr = match addr_string.parse() { Ok(addr) => addr, Err(err) => { @@ -175,8 +182,17 @@ async fn retry_dropped_outgoing(ip: String, port: u16) { return; } Err(err) => { + let err_string = err.to_string(); + if err_string.contains( + "The connection is already in the connection manager Please wait 10 minutes and try again", + ) { + info!( + "[reconnect] dropped peer {addr_string} is already in the connection manager; stopping reconnect attempts" + ); + return; + } warn!( - "[reconnect] failed to reconnect dropped peer {addr_string} on attempt {attempt}/3: {err}" + "[reconnect] failed to reconnect dropped peer {addr_string} on attempt {attempt}/3: {err_string}" ); } } diff --git a/src/records/memory/network_mapping/add.rs b/src/records/memory/network_mapping/add.rs index c41f64a..b8a4d36 100644 --- a/src/records/memory/network_mapping/add.rs +++ b/src/records/memory/network_mapping/add.rs @@ -430,19 +430,7 @@ impl NodeInfo { } if state_changed && !remote_ip.is_empty() { - let broadcast_map = map.clone(); - let broadcast_address = edit.address.clone(); - let broadcast_remote_ip = remote_ip.clone(); - let broadcast_connections_key = connections_key.clone(); - tokio::spawn(async move { - Self::broadcast_address_state( - broadcast_map, - &broadcast_address, - &broadcast_remote_ip, - &broadcast_connections_key, - ) - .await; - }); + Self::broadcast_address_state(map, &edit.address, &remote_ip, &connections_key).await; } RpcResponse::Binary(b"Success".to_vec()) diff --git a/src/records/memory/network_mapping/mined_counts.rs b/src/records/memory/network_mapping/mined_counts.rs index b7cf93b..d366c46 100644 --- a/src/records/memory/network_mapping/mined_counts.rs +++ b/src/records/memory/network_mapping/mined_counts.rs @@ -20,7 +20,6 @@ impl NodeInfo { } } } - Self::persist_recovery_snapshot("mined increment").await; } pub async fn decrement_mined(address: &str) { @@ -33,7 +32,6 @@ impl NodeInfo { } } } - Self::persist_recovery_snapshot("mined decrement").await; } pub async fn get_mined_count(address: &str) -> u8 { diff --git a/src/rpc/client/handshake_processing.rs b/src/rpc/client/handshake_processing.rs index 7e6e1bd..33953db 100644 --- a/src/rpc/client/handshake_processing.rs +++ b/src/rpc/client/handshake_processing.rs @@ -138,6 +138,8 @@ pub async fn bootstrap_peer_discovery(mut params: BootstrapParams) -> Result<(), } }; + sleep(Duration::from_secs(2)).await; + let connect = Connect { addr: socket_addr, node_ip: addr_string.clone(), @@ -417,7 +419,7 @@ pub async fn process_handshake_response( let join_mode = if crate::records::memory::network_mapping::NodeInfo::self_add_allowed_at_height( remote_height, ) { - "bootstrap_self_add" + "bootstrap_unsigned_request" } else { "sponsored_add" };