forked from MirrorHub/synapse
Merge branch 'erikj/cache_deferreds' of github.com:matrix-org/synapse into erikj/cache_varargs_interface
This commit is contained in:
commit
ffab798a38
1 changed files with 4 additions and 3 deletions
|
@ -184,8 +184,8 @@ class CacheDescriptor(object):
|
||||||
try:
|
try:
|
||||||
cached_result_d = self.cache.get(keyargs)
|
cached_result_d = self.cache.get(keyargs)
|
||||||
|
|
||||||
|
observed = cached_result_d.observe()
|
||||||
if DEBUG_CACHES:
|
if DEBUG_CACHES:
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def check_result(cached_result):
|
def check_result(cached_result):
|
||||||
actual_result = yield self.function_to_call(obj, *args, **kwargs)
|
actual_result = yield self.function_to_call(obj, *args, **kwargs)
|
||||||
|
@ -196,9 +196,10 @@ class CacheDescriptor(object):
|
||||||
cached_result, actual_result,
|
cached_result, actual_result,
|
||||||
)
|
)
|
||||||
raise ValueError("Stale cache entry")
|
raise ValueError("Stale cache entry")
|
||||||
cached_result_d.observe().addCallback(check_result)
|
defer.returnValue(cached_result)
|
||||||
|
observed.addCallback(check_result)
|
||||||
|
|
||||||
return cached_result_d.observe()
|
return observed
|
||||||
except KeyError:
|
except KeyError:
|
||||||
# Get the sequence number of the cache before reading from the
|
# Get the sequence number of the cache before reading from the
|
||||||
# database so that we can tell if the cache is invalidated
|
# database so that we can tell if the cache is invalidated
|
||||||
|
|
Loading…
Reference in a new issue