Also dont print traceback if db is closed

This commit is contained in:
Kovid Goyal 2020-09-05 05:54:33 +05:30
parent 5d92cfadd1
commit 7dbefdf117
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
3 changed files with 8 additions and 1 deletions

View File

@ -403,6 +403,7 @@ class DB(object):
def __init__(self, library_path, default_prefs=None, read_only=False, def __init__(self, library_path, default_prefs=None, read_only=False,
restore_all_prefs=False, progress_callback=lambda x, y:True, restore_all_prefs=False, progress_callback=lambda x, y:True,
load_user_formatter_functions=True): load_user_formatter_functions=True):
self.is_closed = False
try: try:
if isbytestring(library_path): if isbytestring(library_path):
library_path = library_path.decode(filesystem_encoding) library_path = library_path.decode(filesystem_encoding)
@ -907,6 +908,7 @@ class DB(object):
def conn(self): def conn(self):
if self._conn is None: if self._conn is None:
self._conn = Connection(self.dbpath) self._conn = Connection(self.dbpath)
self.is_closed = False
if self._exists and self.user_version == 0: if self._exists and self.user_version == 0:
self._conn.close() self._conn.close()
os.remove(self.dbpath) os.remove(self.dbpath)
@ -1148,6 +1150,7 @@ class DB(object):
pass pass
self._conn.close(force) self._conn.close(force)
del self._conn del self._conn
self.is_closed = True
def reopen(self, force=False): def reopen(self, force=False):
self.close(force=force, unload_formatter_functions=False) self.close(force=force, unload_formatter_functions=False)

View File

@ -62,7 +62,7 @@ class MetadataBackup(Thread):
try: try:
self.db.check_dirtied_annotations() self.db.check_dirtied_annotations()
except Exception: except Exception:
if self.stop_running.is_set(): if self.stop_running.is_set() or self.db.is_closed:
return return
traceback.print_exc() traceback.print_exc()
try: try:

View File

@ -2127,6 +2127,10 @@ class Cache(object):
traceback.print_exc() traceback.print_exc()
self.backend.close() self.backend.close()
@property
def is_closed(self):
return self.backend.is_closed
@write_api @write_api
def restore_book(self, book_id, mi, last_modified, path, formats, annotations=()): def restore_book(self, book_id, mi, last_modified, path, formats, annotations=()):
''' Restore the book entry in the database for a book that already exists on the filesystem ''' ''' Restore the book entry in the database for a book that already exists on the filesystem '''