From acfd853f5af37a2b54b1455a90189593f2eb0042 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 25 Mar 2014 21:23:25 +0530 Subject: [PATCH] Prevent busy errors when reloading the db --- src/calibre/db/cache.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py index 5c1ffdc8f2..54bfe9c012 100644 --- a/src/calibre/db/cache.py +++ b/src/calibre/db/cache.py @@ -196,11 +196,12 @@ class Cache(object): def reload_from_db(self, clear_caches=True): if clear_caches: self._clear_caches() - self.backend.prefs.load_from_db() - self._search_api.saved_searches.load_from_db() - for field in self.fields.itervalues(): - if hasattr(field, 'table'): - field.table.read(self.backend) # Reread data from metadata.db + with self.backend.conn: # Prevent other processes, such as calibredb from interrupting the reload by locking the db + self.backend.prefs.load_from_db() + self._search_api.saved_searches.load_from_db() + for field in self.fields.itervalues(): + if hasattr(field, 'table'): + field.table.read(self.backend) # Reread data from metadata.db @property def field_metadata(self):