From ebf5fd527e2219eac5038a69a4db2dc0ffe22ced Mon Sep 17 00:00:00 2001 From: Nicolas Sebrecht Date: Wed, 22 Mar 2017 12:01:27 +0100 Subject: [PATCH] folder: UIDMaps: ignore KeyError failure while removing keys This would require more digging to understand how this is possible. I suspect that a previous run has been interrupted. Github-ref: https://github.com/OfflineIMAP/offlineimap/issues/445 Signed-off-by: Nicolas Sebrecht --- offlineimap/folder/UIDMaps.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/offlineimap/folder/UIDMaps.py b/offlineimap/folder/UIDMaps.py index 9dc5898..9e9d712 100644 --- a/offlineimap/folder/UIDMaps.py +++ b/offlineimap/folder/UIDMaps.py @@ -142,8 +142,22 @@ class MappedIMAPFolder(IMAPFolder): for luid in self.diskl2r.keys(): if not luid in reallist: ruid = self.diskl2r[luid] - del self.diskr2l[ruid] - del self.diskl2r[luid] + #XXX: the following KeyError are sightly unexpected. This + # would require more digging to understand how it's + # possible. + errorMessage = ("unexpected error: key {} was not found " + "in memory, see " + "https://github.com/OfflineIMAP/offlineimap/issues/445" + " to know more." + ) + try: + del self.diskr2l[ruid] + except KeyError as e: + self.ui.warn(errorMessage.format(ruid)) + try: + del self.diskl2r[luid] + except KeyError as e: + self.ui.warn(errorMessage.format(ruid)) # Now, assign negative UIDs to local items. self._savemaps()