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..ac08fec83 100644 --- a/core/src/network/p2p/event_loop.rs +++ b/core/src/network/p2p/event_loop.rs @@ -308,16 +308,12 @@ 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, .. } => { // 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); } @@ -330,11 +326,9 @@ 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"); + trace!("Pruning local records on fat client"); self.swarm.behaviour_mut().kademlia.remove_record(&key); }