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)
 
 

Reply via email to