summary refs log tree commit diff
path: root/synapse/appservice/api.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2017-10-25 15:21:08 +0100
committerErik Johnston <erik@matrix.org>2017-10-25 15:21:08 +0100
commit2a7e9faeec9af8723b9613fef3b3059b1fe777f5 (patch)
tree53d837f7fdbc2f1ab6ed7c4b1dc797efc60574ac /synapse/appservice/api.py
parentAdd logging and fix log contexts for publicRooms (diff)
downloadsynapse-2a7e9faeec9af8723b9613fef3b3059b1fe777f5.tar.xz
Do logcontexts outside ResponseCache
Diffstat (limited to 'synapse/appservice/api.py')
-rw-r--r--synapse/appservice/api.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/synapse/appservice/api.py b/synapse/appservice/api.py

index 6893610e71..40c433d7ae 100644 --- a/synapse/appservice/api.py +++ b/synapse/appservice/api.py
@@ -18,6 +18,7 @@ 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 @@ -192,9 +193,12 @@ class ApplicationServiceApi(SimpleHttpClient): defer.returnValue(None) key = (service.id, protocol) - return self.protocol_meta_cache.get(key) or ( - self.protocol_meta_cache.set(key, _get()) - ) + 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) @defer.inlineCallbacks def push_bulk(self, service, events, txn_id=None):