Commit 07235aec authored by Malcolm Box's avatar Malcolm Box Committed by Claude Paroz
Browse files

[1.7.x] Fixed #22495 -- Locmem cache.add() failed with infinite timeouts

cache.add() incorrectly succeeded when there was an existing key
with an infinite (None) timeout.
Backport of af5f6883 from master.
parent e192f131
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -29,8 +29,8 @@ class LocMemCache(BaseCache):
        self.validate_key(key)
        pickled = pickle.dumps(value, pickle.HIGHEST_PROTOCOL)
        with self._lock.writer():
            exp = self._expire_info.get(key)
            if exp is None or exp <= time.time():
            exp = self._expire_info.get(key, 0)
            if exp is not None and exp <= time.time():
                self._set(key, pickled, timeout)
                return True
            return False
+3 −0
Original line number Diff line number Diff line
@@ -491,6 +491,9 @@ class BaseCacheTests(object):

        cache.add('key2', 'ham', None)
        self.assertEqual(cache.get('key2'), 'ham')
        added = cache.add('key1', 'new eggs', None)
        self.assertEqual(added, False)
        self.assertEqual(cache.get('key1'), 'eggs')

        cache.set_many({'key3': 'sausage', 'key4': 'lobster bisque'}, None)
        self.assertEqual(cache.get('key3'), 'sausage')