From b94096a2ac187c154d86d218864eb9ef791e1a83 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <7190048+kegsay@users.noreply.github.com> Date: Fri, 26 Sep 2025 15:53:12 +0100 Subject: [PATCH] Update 4354-sticky-events.md --- proposals/4354-sticky-events.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/proposals/4354-sticky-events.md b/proposals/4354-sticky-events.md index 11ad74347..0fd8ef56a 100644 --- a/proposals/4354-sticky-events.md +++ b/proposals/4354-sticky-events.md @@ -198,12 +198,18 @@ The two cases where this is different is: Servers tend to maintain a sliding window of events to deliver to other servers e.g the most recent 50 PDUs. Sticky events can fall outside this range, which is what we define as "old". On the receiving server, old events appear to have unknown `prev_events`, which cannot be connected to any known part of the room DAG. Sending sticky events to newly joined servers can be seen -as a form of sending old but unexpired sticky events, and so this proposal only considers this case. Sending these old events -will potentially increase the number of forward extremities in the room for the receiving server. This may impact state resolution +as a form of sending old but unexpired sticky events, and so this proposal only considers this case. + +Servers MUST send old sticky events in the order they were created on the server (stream ordering / based on `origin_server_ts`). +This ensures that sticky events appear in roughly the right place in the timeline as servers use the arrival ordering to determine +an event's position in the timeline. + +Sending these old events will potentially increase the number of forward extremities in the room for the receiving server. This may impact state resolution performance if there are many forward extremities. Servers MAY send dummy events to remove forward extremities (Synapse has the option to do this since 2019). Alternatively, servers MAY choose not to add old sticky events to their forward extremities, but this A) reduces eventual delivery guarantees by reducing the frequency of transitive delivery of events, B) reduces the convergence -rate when implementing ephemeral maps (see "Addendum: Implementing an ephemeral map"), as that relies on servers referencing sticky events from other servers. +rate when implementing ephemeral maps (see "Addendum: Implementing an ephemeral map"), as that relies on servers referencing sticky +events from other servers. #### Spam