mirror of
https://mau.dev/maunium/synapse.git
synced 2024-11-05 06:08:58 +01:00
Faster joins: Fix spurious errors on incremental sync (#15232)
When pushing events in partial state rooms down incremental /sync, we try to find the `m.room.member` state event for their senders by digging through their auth events, so that we can present the membership to the client. Events usually have a membership event in their auth events, with the exception of the `m.room.create` event and a user's first join into the room. When implementing #13477, we took the case of a user's first join into account, but forgot to handle the `m.room.create` case. This change fixes that. Signed-off-by: Sean Quah <seanq@matrix.org>
This commit is contained in:
parent
3d060eae6c
commit
caf43c3d7c
2 changed files with 8 additions and 2 deletions
1
changelog.d/15232.bugfix
Normal file
1
changelog.d/15232.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Faster joins: Fix a bug introduced in Synapse 1.66 where spurious "Failed to find memberships ..." errors would be logged.
|
|
@ -1226,6 +1226,10 @@ class SyncHandler:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
event_with_membership_auth = events_with_membership_auth[member]
|
event_with_membership_auth = events_with_membership_auth[member]
|
||||||
|
is_create = (
|
||||||
|
event_with_membership_auth.is_state()
|
||||||
|
and event_with_membership_auth.type == EventTypes.Create
|
||||||
|
)
|
||||||
is_join = (
|
is_join = (
|
||||||
event_with_membership_auth.is_state()
|
event_with_membership_auth.is_state()
|
||||||
and event_with_membership_auth.type == EventTypes.Member
|
and event_with_membership_auth.type == EventTypes.Member
|
||||||
|
@ -1233,9 +1237,10 @@ class SyncHandler:
|
||||||
and event_with_membership_auth.content.get("membership")
|
and event_with_membership_auth.content.get("membership")
|
||||||
== Membership.JOIN
|
== Membership.JOIN
|
||||||
)
|
)
|
||||||
if not is_join:
|
if not is_create and not is_join:
|
||||||
# The event must include the desired membership as an auth event, unless
|
# The event must include the desired membership as an auth event, unless
|
||||||
# it's the first join event for a given user.
|
# it's the `m.room.create` event for a room or the first join event for
|
||||||
|
# a given user.
|
||||||
missing_members.add(member)
|
missing_members.add(member)
|
||||||
auth_event_ids.update(event_with_membership_auth.auth_event_ids())
|
auth_event_ids.update(event_with_membership_auth.auth_event_ids())
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue