From 87d70304bd7c96b3f65c565b1d8f8177f017f7a0 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 24 Sep 2010 00:05:11 -0600 Subject: [PATCH] Make metadata backup a little more robust --- src/calibre/library/caches.py | 14 ++++++++++---- src/calibre/library/database2.py | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index 2d37314896..0b5a922209 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -19,7 +19,7 @@ from calibre.utils.date import parse_date, now, UNDEFINED_DATE from calibre.utils.search_query_parser import SearchQueryParser from calibre.utils.pyparsing import ParseException from calibre.ebooks.metadata import title_sort -from calibre import fit_image +from calibre import fit_image, prints class MetadataBackup(Thread): # {{{ @@ -39,9 +39,15 @@ class MetadataBackup(Thread): # {{{ id_ = self.db.dirtied_queue.get(True, 5) except Empty: continue - # If there is an exception is dump_func, we - # have no way of knowing - self.dump_func([id_]) + except: + # Happens during interpreter shutdown + break + if self.dump_func([id_]) is None: + # An exception occured in dump_func, retry once + prints('Failed to backup metadata for id:', id_, 'once') + time.sleep(2) + if not self.dump_func([id_]): + prints('Failed to backup metadata for id:', id_, 'again, giving up') # }}} diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 92f8cca0db..6a0d442927 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -575,6 +575,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): (book_id,)) if commit: self.conn.commit() + return True def dirtied(self, book_ids, commit=True): self.conn.executemany(