Skip to content
Snippets Groups Projects
Commit 2b3af017 authored by Richard van der Hoff's avatar Richard van der Hoff
Browse files

optimise DeferredCache.set

parent 9146a8a6
No related branches found
No related tags found
No related merge requests found
Minor optimisations in caching code.
......@@ -214,9 +214,6 @@ class DeferredCache(Generic[KT, VT]):
callbacks = [callback] if callback else []
self.check_thread()
observable = ObservableDeferred(value, consumeErrors=True)
observer = observable.observe()
entry = CacheEntry(deferred=observable, callbacks=callbacks)
existing_entry = self._pending_deferred_cache.pop(key, None)
if existing_entry:
......@@ -224,6 +221,18 @@ class DeferredCache(Generic[KT, VT]):
# XXX: why don't we invalidate the entry in `self.cache` yet?
# we can save a whole load of effort if the deferred is ready.
if value.called:
self.cache.set(key, value.result, callbacks)
return value
# otherwise, we'll add an entry to the _pending_deferred_cache for now,
# and add callbacks to add it to the cache properly later.
observable = ObservableDeferred(value, consumeErrors=True)
observer = observable.observe()
entry = CacheEntry(deferred=observable, callbacks=callbacks)
self._pending_deferred_cache[key] = entry
def compare_and_pop():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment