diff --git a/data/cache/impl.py b/data/cache/impl.py index a851dbe07..982e950e9 100644 --- a/data/cache/impl.py +++ b/data/cache/impl.py @@ -40,7 +40,7 @@ class NoopDataModelCache(DataModelCache): class InMemoryDataModelCache(DataModelCache): """ Implementation of the data model cache backed by an in-memory dictionary. """ def __init__(self): - self.cache = ExpiresDict(rebuilder=lambda: {}) + self.cache = ExpiresDict() def retrieve(self, cache_key, loader, should_cache=is_not_none): not_found = [None] diff --git a/util/expiresdict.py b/util/expiresdict.py index 952cad26b..62c87b9d9 100644 --- a/util/expiresdict.py +++ b/util/expiresdict.py @@ -17,9 +17,9 @@ class ExpiresEntry(object): class ExpiresDict(object): """ ExpiresDict defines a dictionary-like class whose keys have expiration. The rebuilder is a function that returns the full contents of the cached dictionary as a dict of the keys - and whose values are TTLEntry's. + and whose values are TTLEntry's. If the rebuilder is None, then no rebuilding is performed. """ - def __init__(self, rebuilder): + def __init__(self, rebuilder=None): self._rebuilder = rebuilder self._items = {} @@ -49,6 +49,9 @@ class ExpiresDict(object): return self.get(key) is not None def _rebuild(self): + if self._rebuilder is None: + return self._items + items = self._rebuilder() self._items = items return items