improve tracing attributes in sending stack.
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
parent
a87e7d8e17
commit
22b123de7b
2 changed files with 14 additions and 12 deletions
|
@ -224,17 +224,17 @@ impl Service {
|
|||
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 @@ impl Service {
|
|||
});
|
||||
}
|
||||
|
||||
#[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()
|
||||
|
|
|
@ -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 @@ where
|
|||
} 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();
|
||||
|
|
Loading…
Add table
Reference in a new issue