-
Notifications
You must be signed in to change notification settings - Fork 186
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
/sync
and /members
do not return "current state"
#16940
Comments
In general, this seems like a major problem. As long as there is no event in the DAG which references |
Specficially this would in the common case cause a single UTD, as the act of sending the encrypted message would merge the forks and cause S2 to arrive on the client. The UTD cause would be not sharing room keys with the new user, for potentially a long time after they joined. |
Unfortunately I think it's considerably worse than that. Per #16941, Synapse still won't send down S2 to the client even after the DAG is merged. I've proposed an improvement to that, but it still doesn't help clients which have lazy-loading enabled (which is basically all the ones we care about). |
/sync
does not return "current state"/sync
and /members
do not return "current state"
This also extends to |
It's not even clear that events that reference
What happens now? I'm pretty sure that S2 is not returned here. Fundamentally, the expected behaviour is very poorly defined. |
The correct fix for all of this (probably) is to switch to using |
@erikjohnston would it help at all that at least for SSS we only care about returning the current state? We may not be able to fix it for sync v2 easily, but can we for SSS? |
Yup! The SSS implementation actually tracks current state properly |
Consider a DAG like this:
The client then initialsyncs, with
limit=1
(or maybe there are lots of events at E3), represented by the horizontal dashed line.The "current state" (as defined by "what will be the state of the room if I send an event right now", which is what is important for encryption, etc) includes S2. However, the result from
/sync
does not include S2 (and will not, at least until there is an event in the DAG which joins the forks).The text was updated successfully, but these errors were encountered: