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>pull/15244/head
							parent
							
								
									3d060eae6c
								
							
						
					
					
						commit
						caf43c3d7c
					
				| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
            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 = (
 | 
			
		||||
                event_with_membership_auth.is_state()
 | 
			
		||||
                and event_with_membership_auth.type == EventTypes.Member
 | 
			
		||||
| 
						 | 
				
			
			@ -1233,9 +1237,10 @@ class SyncHandler:
 | 
			
		|||
                and event_with_membership_auth.content.get("membership")
 | 
			
		||||
                == 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
 | 
			
		||||
                # 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)
 | 
			
		||||
            auth_event_ids.update(event_with_membership_auth.auth_event_ids())
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue