From 4e3b3d133d71e1fee2e72c3ba08f15d3fd15af20 Mon Sep 17 00:00:00 2001 From: timedout Date: Fri, 29 May 2026 17:15:07 +0100 Subject: [PATCH] fix: Properly remove `event_id` from the PDU JSON before upgrading it --- .../rooms/event_handler/fetch_and_handle_outliers.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/service/rooms/event_handler/fetch_and_handle_outliers.rs b/src/service/rooms/event_handler/fetch_and_handle_outliers.rs index 88d1c3de8..f74a5e456 100644 --- a/src/service/rooms/event_handler/fetch_and_handle_outliers.rs +++ b/src/service/rooms/event_handler/fetch_and_handle_outliers.rs @@ -158,7 +158,9 @@ pub(super) async fn fetch_and_handle_missing_events<'a, Pdu>( } if let Ok(local_pdu) = self.services.timeline.get_pdu(&next_id).await { trace!("Found {next_id} in db"); - seeded_events.insert(next_id.clone(), local_pdu.into_canonical_object()); + let mut obj = local_pdu.into_canonical_object(); + obj.remove("event_id"); + seeded_events.insert(next_id.clone(), obj); continue; } let attempts = seen.get(&*next_id).copied().unwrap_or_default(); @@ -205,7 +207,9 @@ pub(super) async fn fetch_and_handle_missing_events<'a, Pdu>( for auth_event_id in auth_events { if let Ok(local_pdu) = self.services.timeline.get_pdu(&next_id).await { trace!("Found auth event {next_id} in db"); - seeded_events.insert(id.clone(), local_pdu.into_canonical_object()); + let mut obj = local_pdu.into_canonical_object(); + obj.remove("event_id"); + seeded_events.insert(id.clone(), obj); continue; } if seeded_events.contains_key(&auth_event_id) { @@ -245,6 +249,7 @@ pub(super) async fn fetch_and_handle_missing_events<'a, Pdu>( for id in seeded_ordered { let pdu_json = seeded_events.remove(&id).unwrap(); debug_info!("Handling missing event {id} as outlier"); + assert_eq!(pdu_json.get("event_id"), None, "pdu_json had event_id"); match Box::pin(self.handle_outlier_pdu( origin, create_event,