From 40a80cfc82d88d0ea2db0e09daaf082f5dbc2dbe Mon Sep 17 00:00:00 2001 From: nk_ysg Date: Fri, 9 Aug 2024 06:54:50 +0800 Subject: [PATCH 1/3] feat: add metrics for dropped outgoing messages --- crates/net/network/src/metrics.rs | 2 ++ crates/net/network/src/session/mod.rs | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/crates/net/network/src/metrics.rs b/crates/net/network/src/metrics.rs index 8f7b34617dd5..304364aced14 100644 --- a/crates/net/network/src/metrics.rs +++ b/crates/net/network/src/metrics.rs @@ -83,6 +83,8 @@ pub struct NetworkMetrics { pub struct SessionManagerMetrics { /// Number of successful outgoing dial attempts. pub(crate) total_dial_successes: Counter, + /// Number of dropped outgoing dial attempts. + pub(crate) total_dial_dropped: Counter, } /// Metrics for the [`TransactionsManager`](crate::transactions::TransactionsManager). diff --git a/crates/net/network/src/session/mod.rs b/crates/net/network/src/session/mod.rs index 7209e7414106..07fb1e05daf6 100644 --- a/crates/net/network/src/session/mod.rs +++ b/crates/net/network/src/session/mod.rs @@ -41,7 +41,7 @@ use secp256k1::SecretKey; use tokio::{ io::{AsyncRead, AsyncWrite}, net::TcpStream, - sync::{mpsc, oneshot}, + sync::{mpsc, mpsc::error::TrySendError, oneshot}, }; use tokio_stream::wrappers::ReceiverStream; use tokio_util::sync::PollSender; @@ -346,7 +346,17 @@ impl SessionManager { /// Sends a message to the peer's session pub fn send_message(&mut self, peer_id: &PeerId, msg: PeerMessage) { if let Some(session) = self.active_sessions.get_mut(peer_id) { - let _ = session.commands_to_session.try_send(SessionCommand::Message(msg)); + let _ = + session.commands_to_session.try_send(SessionCommand::Message(msg)).map_err(|e| { + if let TrySendError::Full(_) = e { + debug!( + target: "net::session", + ?peer_id, + "session command buffer full, dropping message" + ); + self.metrics.total_dial_dropped.increment(1); + } + }); } } From 663a648117942d0c01d20b7afed84b7f9823ff42 Mon Sep 17 00:00:00 2001 From: nk_ysg Date: Fri, 9 Aug 2024 20:25:03 +0800 Subject: [PATCH 2/3] use inspect_err --- crates/net/network/src/metrics.rs | 2 +- crates/net/network/src/session/mod.rs | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/crates/net/network/src/metrics.rs b/crates/net/network/src/metrics.rs index 304364aced14..99cd0484dc71 100644 --- a/crates/net/network/src/metrics.rs +++ b/crates/net/network/src/metrics.rs @@ -84,7 +84,7 @@ pub struct SessionManagerMetrics { /// Number of successful outgoing dial attempts. pub(crate) total_dial_successes: Counter, /// Number of dropped outgoing dial attempts. - pub(crate) total_dial_dropped: Counter, + pub(crate) total_outgoing_peer_messages_dropped: Counter, } /// Metrics for the [`TransactionsManager`](crate::transactions::TransactionsManager). diff --git a/crates/net/network/src/session/mod.rs b/crates/net/network/src/session/mod.rs index 07fb1e05daf6..74f303df7b88 100644 --- a/crates/net/network/src/session/mod.rs +++ b/crates/net/network/src/session/mod.rs @@ -346,17 +346,18 @@ impl SessionManager { /// Sends a message to the peer's session pub fn send_message(&mut self, peer_id: &PeerId, msg: PeerMessage) { if let Some(session) = self.active_sessions.get_mut(peer_id) { - let _ = - session.commands_to_session.try_send(SessionCommand::Message(msg)).map_err(|e| { + let _ = session.commands_to_session.try_send(SessionCommand::Message(msg)).inspect_err( + |e| { if let TrySendError::Full(_) = e { debug!( target: "net::session", ?peer_id, "session command buffer full, dropping message" ); - self.metrics.total_dial_dropped.increment(1); + self.metrics.total_outgoing_peer_messages_dropped.increment(1); } - }); + }, + ); } } From 22cb4779c48b2b5a7407ed13813c5ebb2a4392e6 Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Fri, 9 Aug 2024 14:48:28 +0200 Subject: [PATCH 3/3] Update crates/net/network/src/metrics.rs --- crates/net/network/src/metrics.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/net/network/src/metrics.rs b/crates/net/network/src/metrics.rs index 99cd0484dc71..4333cf1408b0 100644 --- a/crates/net/network/src/metrics.rs +++ b/crates/net/network/src/metrics.rs @@ -83,7 +83,7 @@ pub struct NetworkMetrics { pub struct SessionManagerMetrics { /// Number of successful outgoing dial attempts. pub(crate) total_dial_successes: Counter, - /// Number of dropped outgoing dial attempts. + /// Number of dropped outgoing peer messages. pub(crate) total_outgoing_peer_messages_dropped: Counter, }