mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-09 22:12:16 -04:00
Faster joins: don't stall when a user joins during a fast join (#14606)
Fixes #12801. Complement tests are at https://github.com/matrix-org/complement/pull/567. Avoid blocking on full state when handling a subsequent join into a partial state room. Also always perform a remote join into partial state rooms, since we do not know whether the joining user has been banned and want to avoid leaking history to banned users. Signed-off-by: Mathieu Velten <mathieuv@matrix.org> Co-authored-by: Sean Quah <seanq@matrix.org> Co-authored-by: David Robertson <davidr@element.io>
This commit is contained in:
parent
d0c713cc85
commit
6cddf24e36
12 changed files with 196 additions and 94 deletions
|
@ -575,26 +575,6 @@ class PartialJoinTestCase(unittest.FederatingHomeserverTestCase):
|
|||
fed_client = fed_handler.federation_client
|
||||
|
||||
room_id = "!room:example.com"
|
||||
membership_event = make_event_from_dict(
|
||||
{
|
||||
"room_id": room_id,
|
||||
"type": "m.room.member",
|
||||
"sender": "@alice:test",
|
||||
"state_key": "@alice:test",
|
||||
"content": {"membership": "join"},
|
||||
},
|
||||
RoomVersions.V10,
|
||||
)
|
||||
|
||||
mock_make_membership_event = Mock(
|
||||
return_value=make_awaitable(
|
||||
(
|
||||
"example.com",
|
||||
membership_event,
|
||||
RoomVersions.V10,
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
EVENT_CREATE = make_event_from_dict(
|
||||
{
|
||||
|
@ -640,6 +620,26 @@ class PartialJoinTestCase(unittest.FederatingHomeserverTestCase):
|
|||
},
|
||||
room_version=RoomVersions.V10,
|
||||
)
|
||||
membership_event = make_event_from_dict(
|
||||
{
|
||||
"room_id": room_id,
|
||||
"type": "m.room.member",
|
||||
"sender": "@alice:test",
|
||||
"state_key": "@alice:test",
|
||||
"content": {"membership": "join"},
|
||||
"prev_events": [EVENT_INVITATION_MEMBERSHIP.event_id],
|
||||
},
|
||||
RoomVersions.V10,
|
||||
)
|
||||
mock_make_membership_event = Mock(
|
||||
return_value=make_awaitable(
|
||||
(
|
||||
"example.com",
|
||||
membership_event,
|
||||
RoomVersions.V10,
|
||||
)
|
||||
)
|
||||
)
|
||||
mock_send_join = Mock(
|
||||
return_value=make_awaitable(
|
||||
SendJoinResult(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue