diff --git a/crates/core/src/client/client_connection.rs b/crates/core/src/client/client_connection.rs index 05826a4474f..0d01827a8b3 100644 --- a/crates/core/src/client/client_connection.rs +++ b/crates/core/src/client/client_connection.rs @@ -79,6 +79,7 @@ pub struct ClientConnectionSender { sendtx: mpsc::Sender, abort_handle: AbortHandle, cancelled: AtomicBool, + pub(crate) not_warned_failed_to_send_message: AtomicBool, /// Handles on Prometheus metrics related to connections to this database. /// @@ -143,12 +144,14 @@ impl ClientConnectionSender { let rx = MeteredReceiver::new(rx); let cancelled = AtomicBool::new(false); + let not_warned_failed_to_send_message = AtomicBool::new(true); let sender = Self { id, config, sendtx, abort_handle, cancelled, + not_warned_failed_to_send_message, metrics: None, }; (sender, rx) @@ -418,12 +421,14 @@ impl ClientConnection { let metrics = ClientConnectionMetrics::new(database_identity, config.protocol); let sendrx = MeteredReceiver::with_gauge(sendrx, metrics.sendtx_queue_size.clone()); + let not_warned_failed_to_send_message = AtomicBool::new(true); let sender = Arc::new(ClientConnectionSender { id, config, sendtx, abort_handle, cancelled: AtomicBool::new(false), + not_warned_failed_to_send_message, metrics: Some(metrics), }); let this = Self { diff --git a/crates/core/src/subscription/module_subscription_manager.rs b/crates/core/src/subscription/module_subscription_manager.rs index 0bb2d9d0082..dace0e754f0 100644 --- a/crates/core/src/subscription/module_subscription_manager.rs +++ b/crates/core/src/subscription/module_subscription_manager.rs @@ -1522,7 +1522,12 @@ impl SendWorker { fn send_to_client(client: &ClientConnectionSender, message: impl Into) { if let Err(e) = client.send_message(message) { - tracing::warn!(%client.id, "failed to send update message to client: {e}") + if client + .not_warned_failed_to_send_message + .fetch_and(false, Ordering::AcqRel) + { + tracing::warn!(%client.id, "failed to send update message to client: {e}") + } } }