diff options
author | Matthew Hodgson <matthew@arasphere.net> | 2018-07-26 22:51:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-26 22:51:30 +0100 |
commit | a75231b507e025eaaa4f06d8932c04fa4e942d48 (patch) | |
tree | 1299b63f9624cc9b5d8c74dfb7653c0123e80618 /synapse/api | |
parent | Merge pull request #3613 from matrix-org/rav/stop_using_event_edges_room_id (diff) | |
download | synapse-a75231b507e025eaaa4f06d8932c04fa4e942d48.tar.xz |
Deduplicate redundant lazy-loaded members (#3331)
* attempt at deduplicating lazy-loaded members as per the proposal; we can deduplicate redundant lazy-loaded members which are sent in the same sync sequence. we do this heuristically rather than requiring the client to somehow tell us which members it has chosen to cache, by instead caching the last N members sent to a client, and not sending them again. For now we hardcode N to 100. Each cache for a given (user,device) tuple is in turn cached for up to X minutes (to avoid the caches building up). For now we hardcode X to 30. * add include_redundant_members filter option & make it work * remove stale todo * add tests for _get_some_state_from_cache * incorporate review
Diffstat (limited to 'synapse/api')
-rw-r--r-- | synapse/api/filtering.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/synapse/api/filtering.py b/synapse/api/filtering.py index 7e767b9bf5..186831e118 100644 --- a/synapse/api/filtering.py +++ b/synapse/api/filtering.py @@ -117,6 +117,9 @@ ROOM_EVENT_FILTER_SCHEMA = { "lazy_load_members": { "type": "boolean" }, + "include_redundant_members": { + "type": "boolean" + }, } } @@ -267,6 +270,9 @@ class FilterCollection(object): def lazy_load_members(self): return self._room_state_filter.lazy_load_members() + def include_redundant_members(self): + return self._room_state_filter.include_redundant_members() + def filter_presence(self, events): return self._presence_filter.filter(events) @@ -426,6 +432,9 @@ class Filter(object): def lazy_load_members(self): return self.filter_json.get("lazy_load_members", False) + def include_redundant_members(self): + return self.filter_json.get("include_redundant_members", False) + def _matches_wildcard(actual_value, filter_value): if filter_value.endswith("*"): |