Merge "debsentry.py: capture exceptions"

This commit is contained in:
Zuul 2022-05-10 17:57:39 +00:00 committed by Gerrit Code Review
commit bfc418202a

View File

@ -18,28 +18,38 @@ import pickle
def get_subdebs(clue, package, logger):
if not os.path.exists(clue):
logger.warn("debs_entry:debs clue %s does not exist" % clue)
return None
with open(clue, 'rb') as fclue:
debs = pickle.load(fclue)
if package in debs.keys():
return debs[package]
return None
try:
with open(clue, 'rb') as fclue:
try:
debs = pickle.load(fclue)
if package in debs.keys():
return debs[package]
except (EOFError, ValueError, AttributeError, ImportError, IndexError, pickle.UnpicklingError) as e:
logger.warn(f"debs_entry:failed to load {clue}, return None")
except IOError:
logger.warn(f"debs_entry:{clue} does not exist")
return None
def set_subdebs(clue, package, debs, logger):
debmap = {}
if os.path.exists(clue):
try:
with open(clue, 'rb') as fclue:
debmap = pickle.load(fclue)
logger.debug("debs_entry:loaded the debs clue %s" % clue)
else:
logger.debug("debs_entry:%s does not exist" % clue)
try:
debmap = pickle.load(fclue)
logger.debug(f"debs_entry:loaded the debs clue {clue}")
except (EOFError, ValueError, AttributeError, ImportError, IndexError, pickle.UnpicklingError) as e:
logger.warn(f"debs_entry:failed to load {clue}, recreate it")
os.remove(clue)
debmap = {}
except IOError:
logger.debug(f"debs_entry:{clue} does not exist")
debmap[package] = debs
with open(clue, 'wb+') as fclue:
pickle.dump(debmap, fclue, pickle.HIGHEST_PROTOCOL)
try:
with open(clue, 'wb+') as fclue:
pickle.dump(debmap, fclue, pickle.HIGHEST_PROTOCOL)
except IOError:
raise Exception(f"debs_entry:failed to write {clue}")
return True