Prevent busy errors when reloading the db

This commit is contained in:
Kovid Goyal 2014-03-25 21:23:25 +05:30
parent 7a4f106f3d
commit acfd853f5a

View File

@ -196,11 +196,12 @@ class Cache(object):
def reload_from_db(self, clear_caches=True): def reload_from_db(self, clear_caches=True):
if clear_caches: if clear_caches:
self._clear_caches() self._clear_caches()
self.backend.prefs.load_from_db() with self.backend.conn: # Prevent other processes, such as calibredb from interrupting the reload by locking the db
self._search_api.saved_searches.load_from_db() self.backend.prefs.load_from_db()
for field in self.fields.itervalues(): self._search_api.saved_searches.load_from_db()
if hasattr(field, 'table'): for field in self.fields.itervalues():
field.table.read(self.backend) # Reread data from metadata.db if hasattr(field, 'table'):
field.table.read(self.backend) # Reread data from metadata.db
@property @property
def field_metadata(self): def field_metadata(self):