mirror of
				https://github.com/matrix-org/synapse.git
				synced 2025-10-31 20:28:16 +00: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
					
				
							
								
								
									
										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 | ||||
| 
 | ||||
|             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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user