From 3af5302dd8764d8521db2030a010a80e6ea60664 Mon Sep 17 00:00:00 2001 From: timedout Date: Sat, 10 Oct 2026 02:23:39 +0100 Subject: [PATCH] feat: Add more useful errors to send_join See also: #2340 --- src/api/server/send_join.rs | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/api/server/send_join.rs b/src/api/server/send_join.rs index 7b0e2f2df..dd9b12e14 100644 --- a/src/api/server/send_join.rs +++ b/src/api/server/send_join.rs @@ -163,7 +163,14 @@ async fn create_join_event( } Some(event_id) }) - .broad_and_then(|event_id| services.rooms.timeline.get_pdu_json(event_id)) + .broad_and_then(|event_id| async move { + services + .rooms + .timeline + .get_pdu_json(event_id) + .await + .map_err(|e| err!(Database("Could not fetch state event {event_id}: {e:?}"))) + }) .broad_and_then(|pdu| { services .sending @@ -172,7 +179,12 @@ async fn create_join_event( }) .try_collect() .boxed() - .await?; + .await + .map_err(|e| { + err!(BadServerResponse( + error!(err=?e, "Failed to build room state at new join event") + )) + })?; let starting_events = state_ids.iter().map(Borrow::borrow); trace!("Constructing auth chain"); @@ -181,7 +193,12 @@ async fn create_join_event( .auth_chain .event_ids_iter(room_id, starting_events) .broad_and_then(|event_id| async move { - services.rooms.timeline.get_pdu_json(&event_id).await + services + .rooms + .timeline + .get_pdu_json(&event_id) + .await + .map_err(|e| err!(Database("Could not fetch state event {event_id}: {e:?}"))) }) .broad_and_then(|pdu| { services @@ -191,7 +208,12 @@ async fn create_join_event( }) .try_collect() .boxed() - .await?; + .await + .map_err(|e| { + err!(BadServerResponse( + error!(err=?e, "Failed to build auth chain for new join event") + )) + })?; info!(fast_join = %omit_members, "Sending join event to other servers"); services.sending.send_pdu_room(room_id, &pdu_id).await?; debug!("Finished sending join event");