summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthew Hodgson <matthew@arasphere.net>2018-09-25 00:49:26 +0100
committerGitHub <noreply@github.com>2018-09-25 00:49:26 +0100
commit787d22ed6cbc8f78fed7e316d345e54b7c6a93da (patch)
tree210fe42e199a3f64cd920958463355e9a4862897
parentMerge branch 'master' into develop (diff)
downloadsynapse-787d22ed6cbc8f78fed7e316d345e54b7c6a93da.tar.xz
Only lazy load self-members on initial sync
Given we have disabled lazy loading for incr syncs in #3840, we can make self-LL more efficient by only doing it on initial sync.  Also adds a bounds check for if/when we change our mind, so that we don't try to include LL members on sync responses with no timeline.
-rw-r--r--changelog.d/3936.bugfix1
-rw-r--r--synapse/handlers/sync.py13
2 files changed, 9 insertions, 5 deletions
diff --git a/changelog.d/3936.bugfix b/changelog.d/3936.bugfix
new file mode 100644

index 0000000000..49b02b9e27 --- /dev/null +++ b/changelog.d/3936.bugfix
@@ -0,0 +1 @@ +Fix out-of-bounds error when LLing yourself diff --git a/synapse/handlers/sync.py b/synapse/handlers/sync.py
index b598916b21..c7d69d9d80 100644 --- a/synapse/handlers/sync.py +++ b/synapse/handlers/sync.py
@@ -713,10 +713,6 @@ class SyncHandler(object): ) ] - # always make sure we LL ourselves so we know we're in the room - # (if we are), to fix https://github.com/vector-im/riot-web/issues/7209 - types.append((EventTypes.Member, sync_config.user.to_string())) - # only apply the filtering to room members filtered_types = [EventTypes.Member] @@ -726,6 +722,13 @@ class SyncHandler(object): } if full_state: + if lazy_load_members: + # always make sure we LL ourselves so we know we're in the room + # (if we are) to fix https://github.com/vector-im/riot-web/issues/7209 + # We only need apply this on full state syncs given we disabled + # LL for incr syncs in #3840. + types.append((EventTypes.Member, sync_config.user.to_string())) + if batch: current_state_ids = yield self.store.get_state_ids_for_event( batch.events[-1].event_id, types=types, @@ -794,7 +797,7 @@ class SyncHandler(object): else: state_ids = {} if lazy_load_members: - if types: + if types and batch.events: # We're returning an incremental sync, with no # "gap" since the previous sync, so normally there would be # no state to return.