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

Fixed #22495 -- Locmem cache.add() failed with infinite timeouts

cache.add() incorrectly succeeded when there was an existing key
with an infinite (None) timeout.
parent 2ffa6ca7
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
@@ -490,6 +490,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')