From 676dc20e0d77c2afeb3138edbee63f3119ababd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksandar=20Terenti=C4=87?= Date: Tue, 5 Nov 2024 11:53:27 +0100 Subject: [PATCH 1/2] Fix put record event handling in case of an error --- core/CHANGELOG.md | 1 + core/src/network/p2p/client.rs | 11 +++++------ core/src/network/p2p/event_loop.rs | 6 ------ 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index aaf0348b3..5dd354ae7 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -2,6 +2,7 @@ ## 1.0.4 +- Fix put record metric event in case of errors - Fix telemetry naming, put project name as prefix instead of suffix - Add timeouts to RPC subscriptions - Integrate upstream `rust-libp2p` `0.54` changes to the bootstrap process diff --git a/core/src/network/p2p/client.rs b/core/src/network/p2p/client.rs index 1d06f3850..a9b20b0de 100644 --- a/core/src/network/p2p/client.rs +++ b/core/src/network/p2p/client.rs @@ -19,7 +19,7 @@ use libp2p::{ use std::time::{Duration, Instant}; use sysinfo::System; use tokio::sync::{mpsc::UnboundedSender, oneshot}; -use tracing::{debug, info, trace}; +use tracing::{debug, info, trace, warn}; use super::{ event_loop::ConnectionEstablishedInfo, is_global, is_multiaddr_global, Command, EventLoop, @@ -195,11 +195,10 @@ impl Client { self.command_sender .send(Box::new(move |context: &mut EventLoop| { for record in records.clone() { - let _ = context - .swarm - .behaviour_mut() - .kademlia - .put_record(record, quorum); + let kademlia = &mut context.swarm.behaviour_mut().kademlia; + if let Err(error) = kademlia.put_record(record, quorum) { + warn!("Put record failed: {error}"); + } } context diff --git a/core/src/network/p2p/event_loop.rs b/core/src/network/p2p/event_loop.rs index 01340d8b9..8b12e4156 100644 --- a/core/src/network/p2p/event_loop.rs +++ b/core/src/network/p2p/event_loop.rs @@ -308,10 +308,6 @@ impl EventLoop { _ => (), }, QueryResult::PutRecord(Err(error)) => { - if self.pending_kad_queries.remove(&id).is_none() { - return; - }; - match error { kad::PutRecordError::QuorumFailed { key, .. } | kad::PutRecordError::Timeout { key, .. } => { @@ -330,8 +326,6 @@ impl EventLoop { }, QueryResult::PutRecord(Ok(PutRecordOk { key })) => { - _ = self.pending_kad_queries.remove(&id); - // Remove local records for fat clients (memory optimization) if self.event_loop_config.is_fat_client { debug!("Pruning local records on fat client"); From b832eab910984ae8635ed96ec1fae57cfe95f83a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksandar=20Terenti=C4=87?= Date: Tue, 5 Nov 2024 12:18:06 +0100 Subject: [PATCH 2/2] Set log level for fat client record prunning to trace --- core/src/network/p2p/event_loop.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/network/p2p/event_loop.rs b/core/src/network/p2p/event_loop.rs index 8b12e4156..ac08fec83 100644 --- a/core/src/network/p2p/event_loop.rs +++ b/core/src/network/p2p/event_loop.rs @@ -313,7 +313,7 @@ impl EventLoop { | kad::PutRecordError::Timeout { key, .. } => { // Remove local records for fat clients (memory optimization) if self.event_loop_config.is_fat_client { - debug!("Pruning local records on fat client"); + trace!("Pruning local records on fat client"); self.swarm.behaviour_mut().kademlia.remove_record(&key); } @@ -328,7 +328,7 @@ impl EventLoop { QueryResult::PutRecord(Ok(PutRecordOk { key })) => { // Remove local records for fat clients (memory optimization) if self.event_loop_config.is_fat_client { - debug!("Pruning local records on fat client"); + trace!("Pruning local records on fat client"); self.swarm.behaviour_mut().kademlia.remove_record(&key); }