Sliding Sync: Include invite, ban, kick, targets when $LAZY-loading room members#17947
Conversation
…e timeline Part of #17929
…bership-changes-when-lazy-loading-room-members
$LAZY loading room members$LAZY-loading room members
| # doesn't need to send down all membership changes. | ||
| if timeline_event.type == EventTypes.Member: | ||
| timeline_membership.add( | ||
| timeline_event.state_key |
There was a problem hiding this comment.
This makes sense to ensure that the client always gets these relevant membership events.
However, this will still filter out membership changes that don't appear in the timeline. For that case I think we need to not filter membership changes at all for non-gappy incremental syncs (and then make sure the _required_state_changes behaves appropriately).
There was a problem hiding this comment.
@erikjohnston Can you provide an example?
if a user's state changes and it is not in the timeline
@erikjohnston When does this happen? If someone changes their display name for example, the membership state event will show up in the timeline. And if the membership change happened outside of the range of the
timeline_limit, then we are talking about alimited: truesync where this new logic doesn't apply anyway.Is this targeting a scenario where some state comes over federation from some time ago which updates the current state but isn't in the timeline? (not sure this is even a thing because it will still get a recent
stream_orderingwhich should make it come down/sync)
There was a problem hiding this comment.
This can happen due to state res, where a membership e.g. gets reverted to a previous state. In that case we won't have an entry in the timeline, but will have a state event in the state deltas
There was a problem hiding this comment.
Ahh, so in state reset scenarios. I think we will need to merge #17732 as a prerequisite to handle those cases (or maybe not but it's related).
Co-authored-by: Erik Johnston <erikj@element.io>
…bership-changes-when-lazy-loading-room-members
…s-when-lazy-loading-room-members' of github.com:element-hq/synapse into madlittlemods/17929-sliding-sync-send-membership-changes-when-lazy-loading-room-members
Co-authored-by: Erik Johnston <erikj@element.io>
|
Thanks for the review @erikjohnston 🦋 |
… room members (element-hq#17947) Part of element-hq#17929
This release contains the security fixes from [v1.120.2](https://github.com/element-hq/synapse/releases/tag/v1.120.2). - Fix release process to not create duplicate releases. ([\#18025](element-hq/synapse#18025)) - Support for [MSC4190](matrix-org/matrix-spec-proposals#4190): device management for Application Services. ([\#17705](element-hq/synapse#17705)) - Update [MSC4186](matrix-org/matrix-spec-proposals#4186) Sliding Sync to include invite, ban, kick, targets when `$LAZY`-loading room members. ([\#17947](element-hq/synapse#17947)) - Use stable `M_USER_LOCKED` error code for locked accounts, as per [Matrix 1.12](https://spec.matrix.org/v1.12/client-server-api/#account-locking). ([\#17965](element-hq/synapse#17965)) - [MSC4076](matrix-org/matrix-spec-proposals#4076): Add `disable_badge_count` to pusher configuration. ([\#17975](element-hq/synapse#17975)) - Fix long-standing bug where read receipts could get overly delayed being sent over federation. ([\#17933](element-hq/synapse#17933)) - Add OIDC example configuration for Forgejo (fork of Gitea). ([\#17872](element-hq/synapse#17872)) - Link to element-docker-demo from contrib/docker*. ([\#17953](element-hq/synapse#17953)) - [MSC4108](matrix-org/matrix-spec-proposals#4108): Add a `Content-Type` header on the `PUT` response to work around a faulty behavior in some caching reverse proxies. ([\#17253](element-hq/synapse#17253)) - Fix incorrect comment in new schema delta. ([\#17936](element-hq/synapse#17936)) - Raise setuptools_rust version cap to 1.10.2. ([\#17944](element-hq/synapse#17944)) - Enable encrypted appservice related experimental features in the complement docker image. ([\#17945](element-hq/synapse#17945)) - Return whether the user is suspended when querying the user account in the Admin API. ([\#17952](element-hq/synapse#17952)) - Fix new scheduled tasks jumping the queue. ([\#17962](element-hq/synapse#17962)) - Bump pyo3 and dependencies to v0.23.2. ([\#17966](element-hq/synapse#17966)) - Update setuptools-rust and fix building abi3 wheels in latest version. ([\#17969](element-hq/synapse#17969)) - Consolidate SSO redirects through `/_matrix/client/v3/login/sso/redirect(/{idpId})`. ([\#17972](element-hq/synapse#17972)) - Fix Docker and Complement config to be able to use `public_baseurl`. ([\#17986](element-hq/synapse#17986)) - Fix building wheels for MacOS which was temporarily disabled in Synapse 1.120.2. ([\#17993](element-hq/synapse#17993)) - Fix release process to not create duplicate releases. ([\#17970](element-hq/synapse#17970), [\#17995](element-hq/synapse#17995)) * Bump bytes from 1.8.0 to 1.9.0. ([\#17982](element-hq/synapse#17982)) * Bump pysaml2 from 7.3.1 to 7.5.0. ([\#17978](element-hq/synapse#17978)) * Bump serde_json from 1.0.132 to 1.0.133. ([\#17939](element-hq/synapse#17939)) * Bump tomli from 2.0.2 to 2.1.0. ([\#17959](element-hq/synapse#17959)) * Bump tomli from 2.1.0 to 2.2.1. ([\#17979](element-hq/synapse#17979)) * Bump tornado from 6.4.1 to 6.4.2. ([\#17955](element-hq/synapse#17955))
Sliding Sync: Sliding Sync: Include invite, ban, kick, targets when
$LAZY-loading room members.Part of #17929
Previous description
This ensures that we send down membership updates whenever we see it change in the timeline. This allows clients to cache the membership list for as long as it doesn't get a gappy sync, but still ensures for large gaps the server doesn't need to send down all membership changes.
Pull Request Checklist
EventStoretoEventWorkerStore.".code blocks.(run the linters)