diff options
author | Richard van der Hoff <richard@matrix.org> | 2018-04-12 12:08:59 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2018-04-12 13:02:15 +0100 |
commit | b78395b7fe449d59a5c46c81a869f9f191cd934f (patch) | |
tree | 3242266e7cafff4c6fc4084438d00f9a9025ee47 /synapse/appservice | |
parent | Merge pull request #3092 from matrix-org/rav/response_cache_metrics (diff) | |
download | synapse-b78395b7fe449d59a5c46c81a869f9f191cd934f.tar.xz |
Refactor ResponseCache usage
Adds a `.wrap` method to ResponseCache which wraps up the boilerplate of a (get, set) pair, and then use it throughout the codebase. This will be largely non-functional, but does include the following functional changes: * federation_server.on_context_state_request: drops use of _server_linearizer which looked redundant and could cause incorrect cache misses by yielding between the get and the set. * RoomListHandler.get_remote_public_room_list(): fixes logcontext leaks * the wrap function includes some logging. I'm hoping this won't be too noisy on production.
Diffstat (limited to 'synapse/appservice')
-rw-r--r-- | synapse/appservice/api.py | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/synapse/appservice/api.py b/synapse/appservice/api.py index 11e9c37c63..00efff1464 100644 --- a/synapse/appservice/api.py +++ b/synapse/appservice/api.py @@ -18,7 +18,6 @@ from synapse.api.constants import ThirdPartyEntityKind from synapse.api.errors import CodeMessageException from synapse.http.client import SimpleHttpClient from synapse.events.utils import serialize_event -from synapse.util.logcontext import preserve_fn, make_deferred_yieldable from synapse.util.caches.response_cache import ResponseCache from synapse.types import ThirdPartyInstanceID @@ -194,12 +193,7 @@ class ApplicationServiceApi(SimpleHttpClient): defer.returnValue(None) key = (service.id, protocol) - result = self.protocol_meta_cache.get(key) - if not result: - result = self.protocol_meta_cache.set( - key, preserve_fn(_get)() - ) - return make_deferred_yieldable(result) + return self.protocol_meta_cache.wrap(key, _get) @defer.inlineCallbacks def push_bulk(self, service, events, txn_id=None): |