Only delete key from redis in-memory cache if present (#35126)
Fixes #35120 : the redis cache plugin keeps key/value entries in an in-memory cache to avoid hitting the redis database each time. The problem is that a cache entry is only set when a value is get or set but it is always deleted when trying to delete a value. When the --flush-cache ansible-playbook option is used, the redis cache plugin is first asked to remove every entry corresponding to every hostname present in the inventory. As no value as been set/get so far, it then tries to delete an unexisting value from the cache and hence crashes with a KeyError exception.
This commit is contained in:
parent
1589424c3e
commit
ee3dfef016
1 changed files with 2 additions and 1 deletions
3
lib/ansible/plugins/cache/redis.py
vendored
3
lib/ansible/plugins/cache/redis.py
vendored
|
@ -116,7 +116,8 @@ class CacheModule(BaseCacheModule):
|
||||||
return (self._db.zrank(self._keys_set, key) is not None)
|
return (self._db.zrank(self._keys_set, key) is not None)
|
||||||
|
|
||||||
def delete(self, key):
|
def delete(self, key):
|
||||||
del self._cache[key]
|
if key in self._cache:
|
||||||
|
del self._cache[key]
|
||||||
self._db.delete(self._make_key(key))
|
self._db.delete(self._make_key(key))
|
||||||
self._db.zrem(self._keys_set, key)
|
self._db.zrem(self._keys_set, key)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue