Removes a useless cache.delete_many call thanks to a clarification.

This commit is contained in:
Bertrand Bordage 2014-10-21 13:43:08 +02:00
parent dfdb845c55
commit 11070fe3c6

View file

@ -9,41 +9,40 @@ class AtomicCache(dict):
def __init__(self, parent_cache):
super(AtomicCache, self).__init__()
self.parent_cache = parent_cache
self.to_be_deleted = set()
self.deleted = set()
self.to_be_invalidated = set()
def get(self, k, default=None):
if k in self.to_be_deleted:
if k in self.deleted:
return default
if k in self:
return self[k]
return self.parent_cache.get(k, default)
def set(self, k, v):
if k in self.to_be_deleted:
self.to_be_deleted.remove(k)
if k in self.deleted:
self.deleted.remove(k)
self[k] = v
def delete(self, k):
self.to_be_deleted.add(k)
def get_many(self, keys):
data = dict([(k, self[k]) for k in keys if
k in self and k not in self.to_be_deleted])
data = dict([(k, self[k]) for k in keys if k in self])
missing_keys = set(keys)
missing_keys.difference_update(self.deleted)
missing_keys.difference_update(data)
data.update(self.parent_cache.get_many(missing_keys))
return data
def set_many(self, data):
self.to_be_deleted.difference_update(data)
self.deleted.difference_update(data)
self.update(data)
def delete_many(self, keys):
self.to_be_deleted.update(keys)
self.deleted.update(keys)
for k in keys:
if k in self:
del self[k]
def commit(self):
_invalidate_tables_cache_keys(self.parent_cache,
list(self.to_be_invalidated))
self.parent_cache.set_many(self)
self.parent_cache.delete_many(self.to_be_deleted)