mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-14 13:33:50 +01:00
Faster remote room joins (worker mode): do not populate external hosts-in-room cache when sending events as this requires blocking for full state. (#14749)
Signed-off-by: Olivier Wilkinson (reivilibre) <oliverw@matrix.org> Co-authored-by: Sean Quah <seanq@matrix.org>
This commit is contained in:
parent
7f2cabf271
commit
5172c8c403
2 changed files with 17 additions and 5 deletions
1
changelog.d/14749.misc
Normal file
1
changelog.d/14749.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Faster remote room joins (worker mode): do not populate external hosts-in-room cache when sending events as this requires blocking for full state.
|
|
@ -1531,12 +1531,23 @@ class EventCreationHandler:
|
||||||
external federation senders don't have to recalculate it themselves.
|
external federation senders don't have to recalculate it themselves.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
for event, _ in events_and_context:
|
if not self._external_cache.is_enabled():
|
||||||
if not self._external_cache.is_enabled():
|
return
|
||||||
return
|
|
||||||
|
|
||||||
# If external cache is enabled we should always have this.
|
# If external cache is enabled we should always have this.
|
||||||
assert self._external_cache_joined_hosts_updates is not None
|
assert self._external_cache_joined_hosts_updates is not None
|
||||||
|
|
||||||
|
for event, event_context in events_and_context:
|
||||||
|
if event_context.partial_state:
|
||||||
|
# To populate the cache for a partial-state event, we either have to
|
||||||
|
# block until full state, which the code below does, or change the
|
||||||
|
# meaning of cache values to be the list of hosts to which we plan to
|
||||||
|
# send events and calculate that instead.
|
||||||
|
#
|
||||||
|
# The federation senders don't use the external cache when sending
|
||||||
|
# events in partial-state rooms anyway, so let's not bother populating
|
||||||
|
# the cache.
|
||||||
|
continue
|
||||||
|
|
||||||
# We actually store two mappings, event ID -> prev state group,
|
# We actually store two mappings, event ID -> prev state group,
|
||||||
# state group -> joined hosts, which is much more space efficient
|
# state group -> joined hosts, which is much more space efficient
|
||||||
|
|
Loading…
Reference in a new issue