-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/sync
doesn't inform clients when there is a gap in the timeline
#16463
Comments
I think the fix here is to somehow detect that we have a backwards extremity between the |
Not directly related, but MSC3871 talks a bit about detecting gaps in timelines. (Although from a |
Why is the |
Would #13576 help at all? (Proactively backfilling more events.) |
Yup, I believe so.
It'd mitigate this a bit, yes. |
I guess a band-aid might be to try to backfill 100 events or something. This won't work though when the netsplit is only 11 events. I'm having some trouble tracking here how the backfill would even work. Though, currently the homeserver wouldn't attempt to backfill those until the user backscrolled (via |
Oh, hmm. Firstly: I care less right now if you have backpaginate a bunch before you actually do a backfill, but agreed that is sucky. Secondly, I think that if clients |
I do see some hits for it, but they all are either a 401 error with missing access token or the client disconnects before a response is sent? $ grep "to=" synchrotron*.log | grep -v " 401 " | grep -v "already disconnected" |
Oh, that's exciting! |
We talked a bit about this on the phone, it might work to check something about the topo ordering of the first (or last?) event sent down sync vs. the latest topo of the room or something. I'm unsure this would work. Maybe another thing would be if any of the events in the room since the |
Looks like artificially forcing the limited flag doesn't use the |
My plan is to add a table that records whenever we receive an event over federation which we don't have the prev events for (and haven't fetched), i.e. where we have a "gap". Then we use that to force the |
If there has bee e.g. a netsplit in a room where the remote servers have sent more than ten events, then when the netsplit resolves the local server will fetch up to 10 events. The remaining events will be backfilled when a client does an appropriate call to
/messages
.The syncing clients will receive the new events down their timeline, however the
limited
flag is not set. This means the client thinks there is no gap, and so won't try and backfill any missed messages.The net result is that clients won't ever see the older events in the remote fork.
The text was updated successfully, but these errors were encountered: