diff --git a/changelog.d/2164.bugfix.md b/changelog.d/2164.bugfix.md new file mode 100644 index 000000000..59ef5043d --- /dev/null +++ b/changelog.d/2164.bugfix.md @@ -0,0 +1 @@ +Fixed event tracking forgetting to mark soft-failed/rejected events as referenced, which caused a build-up of incorrectly unreferenced events, triggering frequent dummy squashes and associated state resets. diff --git a/src/service/rooms/timeline/append.rs b/src/service/rooms/timeline/append.rs index f4b53a785..35b3771d1 100644 --- a/src/service/rooms/timeline/append.rs +++ b/src/service/rooms/timeline/append.rs @@ -210,7 +210,9 @@ async fn progress_state_and_extremities( let room_id = incoming_pdu.room_id_or_hash(); while let Some(prev_event_id) = ancestors_todo.pop_front() { new_extremities.remove(&prev_event_id); - self.services.pdu_metadata.mark_as_referenced(&room_id, once(prev_event_id.as_ref())); + self.services + .pdu_metadata + .mark_as_referenced(&room_id, once(prev_event_id.as_ref())); let Ok(prev_event) = self.get_pdu(&prev_event_id).await else { continue; };