From 22b123de7bdc77b9e009f7798990fcbde188638e Mon Sep 17 00:00:00 2001 From: Jason Volk <jason@zemos.net> Date: Sat, 30 Mar 2024 23:52:08 -0700 Subject: [PATCH] improve tracing attributes in sending stack. Signed-off-by: Jason Volk <jason@zemos.net> --- src/service/sending/mod.rs | 20 ++++++++++---------- src/service/sending/send.rs | 6 ++++-- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/service/sending/mod.rs b/src/service/sending/mod.rs index a799251d3..1f3d19eac 100644 --- a/src/service/sending/mod.rs +++ b/src/service/sending/mod.rs @@ -224,17 +224,17 @@ pub fn cleanup_events(&self, appservice_id: String) -> Result<()> { Ok(()) } - #[tracing::instrument(skip(self, destination, request))] - pub async fn send_federation_request<T>(&self, destination: &ServerName, request: T) -> Result<T::IncomingResponse> + #[tracing::instrument(skip(self, request), name = "request")] + pub async fn send_federation_request<T>(&self, dest: &ServerName, request: T) -> Result<T::IncomingResponse> where T: OutgoingRequest + Debug, { let permit = self.maximum_requests.acquire().await; let timeout = Duration::from_secs(self.timeout); - let response = tokio::time::timeout(timeout, send::send_request(destination, request)) + let response = tokio::time::timeout(timeout, send::send_request(dest, request)) .await .map_err(|_| { - warn!("Timeout after 300 seconds waiting for server response of {destination}"); + warn!("Timeout after 300 seconds waiting for server response of {dest}"); Error::BadServerResponse("Timeout after 300 seconds waiting for server response") })?; drop(permit); @@ -269,6 +269,7 @@ pub fn start_handler(self: &Arc<Self>) { }); } + #[tracing::instrument(skip(self), name = "sender")] async fn handler(&self) -> Result<()> { let mut receiver = self.receiver.lock().await; @@ -583,7 +584,6 @@ pub fn select_edus_receipts( Ok(true) } -#[tracing::instrument(skip(events, kind))] async fn handle_events( kind: OutgoingKind, events: Vec<SendingEventType>, ) -> Result<OutgoingKind, (OutgoingKind, Error)> { @@ -743,9 +743,9 @@ async fn handle_events_kind_push( Ok(kind.clone()) } -#[tracing::instrument(skip(kind, events))] +#[tracing::instrument(skip(kind, events), name = "")] async fn handle_events_kind_normal( - kind: &OutgoingKind, server: &OwnedServerName, events: Vec<SendingEventType>, + kind: &OutgoingKind, dest: &OwnedServerName, events: Vec<SendingEventType>, ) -> Result<OutgoingKind, (OutgoingKind, Error)> { let mut edu_jsons = Vec::new(); let mut pdu_jsons = Vec::new(); @@ -761,7 +761,7 @@ async fn handle_events_kind_normal( .get_pdu_json_from_id(pdu_id) .map_err(|e| (kind.clone(), e))? .ok_or_else(|| { - error!("event not found: {server} {pdu_id:?}"); + error!("event not found: {dest} {pdu_id:?}"); ( kind.clone(), Error::bad_database("[Normal] Event in servernamevent_datas not found in db."), @@ -784,7 +784,7 @@ async fn handle_events_kind_normal( let permit = services().sending.maximum_requests.acquire().await; let response = send::send_request( - server, + dest, send_transaction_message::v1::Request { origin: services().globals.server_name().to_owned(), pdus: pdu_jsons, @@ -806,7 +806,7 @@ async fn handle_events_kind_normal( .map(|response| { for pdu in response.pdus { if pdu.1.is_err() { - warn!("Failed to send to {}: {:?}", server, pdu); + warn!("Failed to send to {}: {:?}", dest, pdu); } } kind.clone() diff --git a/src/service/sending/send.rs b/src/service/sending/send.rs index 68b6b2b23..cee1fc43a 100644 --- a/src/service/sending/send.rs +++ b/src/service/sending/send.rs @@ -43,6 +43,7 @@ pub enum FedDest { Named(String, String), } +#[tracing::instrument(skip_all, name = "send")] pub(crate) async fn send_request<T>(destination: &ServerName, request: T) -> Result<T::IncomingResponse> where T: OutgoingRequest + Debug, @@ -100,7 +101,7 @@ pub(crate) async fn send_request<T>(destination: &ServerName, request: T) -> Res } else { write_destination_to_cache = true; - let result = find_actual_destination(destination).await; + let result = resolve_actual_destination(destination).await; (result.0, result.1.into_uri_string()) }; @@ -338,7 +339,8 @@ fn add_port_to_hostname(destination_str: &str) -> FedDest { /// Implemented according to the specification at <https://matrix.org/docs/spec/server_server/r0.1.4#resolving-server-names> /// Numbers in comments below refer to bullet points in linked section of /// specification -async fn find_actual_destination(destination: &'_ ServerName) -> (FedDest, FedDest) { +#[tracing::instrument(skip_all, name = "resolve")] +async fn resolve_actual_destination(destination: &'_ ServerName) -> (FedDest, FedDest) { debug!("Finding actual destination for {destination}"); let destination_str = destination.as_str().to_owned(); let mut hostname = destination_str.clone(); -- GitLab