From d5e833480e03ac8dc697cb5c0fa09051c964cda1 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Mon, 2 May 2016 10:44:12 -0400 Subject: [PATCH] Tolerate gdbm gdbm backend does not support the 'iterkeys' interface directly, requiring instead to manually traverse. Unfortunately, dbhash does not implement the gdbm interface for this, so we have to have two codepaths. --- confluent_server/confluent/config/configmanager.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/confluent_server/confluent/config/configmanager.py b/confluent_server/confluent/config/configmanager.py index 78f0e1c0..6986043b 100644 --- a/confluent_server/confluent/config/configmanager.py +++ b/confluent_server/confluent/config/configmanager.py @@ -214,8 +214,14 @@ def _load_dict_from_dbm(dpath, tdb): if elem not in currdict: currdict[elem] = {} currdict = currdict[elem] - for tk in dbe.iterkeys(): - currdict[tk] = cPickle.loads(dbe[tk]) + try: + for tk in dbe.iterkeys(): + currdict[tk] = cPickle.loads(dbe[tk]) + except AttributeError: + tk = dbe.firstkey() + while tk != None: + currdict[tk] = cPickle.loads(dbe[tk]) + tk = dbe.nextkey(tk) except dbm.error: return