From dadcc6993dfe5074e21784f831c992e3c449eeaf Mon Sep 17 00:00:00 2001 From: Ed Bartosh Date: Mon, 11 Aug 2014 00:14:47 +0300 Subject: [PATCH] Fix setting hash values As hmset call doesn't remove old values this fuctionality worked incorrectly and old values were not removed. For example, removing 'PrereleaseDir' from repos.yaml and loading it to the database was not removing this field in Redis. Fixes: #2070 Change-Id: Ida42bd2a24a128b0f82f67bcc2a3b3905ff49920 Signed-off-by: Ed Bartosh --- common/backenddb.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/backenddb.py b/common/backenddb.py index 9690270..fee8cd3 100644 --- a/common/backenddb.py +++ b/common/backenddb.py @@ -92,6 +92,11 @@ class Entity(object): key = "%s%s" % (self._prefix, key) if isinstance(value, dict): mvalue = deepcopy(value) + # delete fields which are not present in new value + for field in self._db.hgetall(key).keys(): + if field not in mvalue: + self._db.hdel(key, field) + # dump jsoned fields for field in self.jsoned: mvalue[field] = json.dumps(value[field]) self._db.hmset(key, mvalue) -- 2.7.4