changeset 2d01626c0431 in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset;node=2d01626c0431
description:
Store timestamp on Cache per database
The timestamp defines when the cache of a database has been cleared.
issue8018
review50711002
diffstat:
trytond/cache.py | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diffs (41 lines):
diff -r cbe0b8e94565 -r 2d01626c0431 trytond/cache.py
--- a/trytond/cache.py Wed Jan 30 10:04:11 2019 +0100
+++ b/trytond/cache.py Wed Jan 30 10:05:55 2019 +0100
@@ -77,7 +77,7 @@
super(MemoryCache, self).__init__(name, size_limit, context)
self._database_cache = defaultdict(lambda: LRUDict(size_limit))
self._transaction_cache = WeakKeyDictionary()
- self._timestamp = None
+ self._timestamp = {}
def _get_cache(self):
transaction = Transaction()
@@ -130,8 +130,9 @@
inst = cls._instances[name]
except KeyError:
continue
- if not inst._timestamp or timestamp > inst._timestamp:
- inst._timestamp = timestamp
+ inst_timestamp = inst._timestamp.get(dbname)
+ if not inst_timestamp or timestamp > inst_timestamp:
+ inst._timestamp[dbname] = timestamp
inst._database_cache[dbname] = LRUDict(inst.size_limit)
cls._clean_last = datetime.now()
@@ -163,7 +164,7 @@
timestamp, = cursor.fetchone()
inst = cls._instances[name]
- inst._timestamp = timestamp
+ inst._timestamp[dbname] = timestamp
inst._database_cache[dbname] = LRUDict(inst.size_limit)
@classmethod
@@ -176,6 +177,7 @@
@classmethod
def drop(cls, dbname):
for inst in cls._instances.values():
+ inst._timestamp.pop(dbname, None)
inst._database_cache.pop(dbname, None)