-
Notifications
You must be signed in to change notification settings - Fork 202
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
Synapse doesn't send out device list updates to previously unseen homeservers when joining a room #11374
Comments
@kegsay questions whether this is still true, and will test |
I can unfortunately confirm that Synapse does not send an I'm trying to see what the impact is of this on a real homeserver next, rather than a test federation server. For example, it could be that:
If this is happening, then aside from it being a bit messy, I think this isn't a UTD cause in the general case. It would be in the edge case where the origin server is dead/offline by the time the remote server hits the origin though... Either way, writing more tests to confirm what is happening here... |
...which is exactly what is happening here. Added another Complement test to assert this. So what does this mean?
In general, I would advocate for eager sending of necessary data (see MSC4081 for reasoned arguments to this effect). It's hard to see how frequently this would cause UTDs. The type of UTD would be |
The current behaviour (Alice and Bob on different homeservers):
Versus what the specification says:
Things break currently when:
In this scenario, Synapse does not have cached keys to give to Bob, so a UTD is inevitable. If keys were cached, there would be no UTD. In other words, the specification solution is more robust to network failures than Synapse is currently. |
Simplified Sliding Sync exacerbates this currently because it seems to not return data immediately to the client. Because of this, the See matrix-org/complement-crypto#129 for a test which failed in SSS due to this. |
This issue has been migrated from #11374.
The spec says that:
Which to be clear, means that upon a local user joining a room, we should:
It doesn't appear that Synapse actually does this anywhere, currently.
We also need to do this for presence (matrix-org/synapse#8956), but the current presence-related TODO in the code may be a good inspiration for what a device list related implementation would look like:
https://github.com/matrix-org/synapse/blob/75ca0a6168f92dab3255839cf85fb0df3a0076c3/synapse/handlers/presence.py#L1368-L1379
The text was updated successfully, but these errors were encountered: