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>anoa/devenv
parent
7f2cabf271
commit
5172c8c403
|
@ -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,13 +1531,24 @@ class EventCreationHandler:
|
|||
external federation senders don't have to recalculate it themselves.
|
||||
"""
|
||||
|
||||
for event, _ in events_and_context:
|
||||
if not self._external_cache.is_enabled():
|
||||
return
|
||||
|
||||
# If external cache is enabled we should always have this.
|
||||
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,
|
||||
# state group -> joined hosts, which is much more space efficient
|
||||
# than event ID -> joined hosts.
|
||||
|
|
Loading…
Reference in New Issue