diff --git a/offlineimap/accounts.py b/offlineimap/accounts.py index b1e0821..e00db6b 100644 --- a/offlineimap/accounts.py +++ b/offlineimap/accounts.py @@ -510,6 +510,7 @@ def syncfolder(account, remotefolder, quick): # Load status folder. statusfolder = statusrepos.getfolder(remotefolder.getvisiblename(). replace(remoterepos.getsep(), statusrepos.getsep())) + statusfolder.openfiles() if localfolder.get_uidvalidity() == None: # This is a new folder, so delete the status cache to be diff --git a/offlineimap/folder/LocalStatus.py b/offlineimap/folder/LocalStatus.py index c627e97..55109a7 100644 --- a/offlineimap/folder/LocalStatus.py +++ b/offlineimap/folder/LocalStatus.py @@ -155,6 +155,9 @@ class LocalStatusFolder(BaseFolder): self.readstatus(cachefd) cachefd.close() + def openfiles(self): + pass # Closing files is done on a per-transaction basis. + def closefiles(self): pass # Closing files is done on a per-transaction basis. diff --git a/offlineimap/folder/LocalStatusSQLite.py b/offlineimap/folder/LocalStatusSQLite.py index 07cff89..79c6e99 100644 --- a/offlineimap/folder/LocalStatusSQLite.py +++ b/offlineimap/folder/LocalStatusSQLite.py @@ -59,9 +59,11 @@ class LocalStatusSQLiteFolder(BaseFolder): raise UserWarning("SQLite database path '%s' is not a directory."% dirname) - # dblock protects against concurrent writes in same connection. + # This lock protects against concurrent writes in same connection. self._dblock = Lock() + self.connection = None + def openfiles(self): # Try to establish connection, no need for threadsafety in __init__. try: self.connection = sqlite.connect(self.filename, check_same_thread=False) @@ -85,10 +87,10 @@ class LocalStatusSQLiteFolder(BaseFolder): cursor = self.connection.execute( "SELECT value from metadata WHERE key='db_version'") except sqlite.DatabaseError: - #db file missing or corrupt, recreate it. + # db file missing or corrupt, recreate it. self.__create_db() else: - # fetch db version and upgrade if needed + # Fetch db version and upgrade if needed. version = int(cursor.fetchone()[0]) if version < LocalStatusSQLiteFolder.cur_version: self.__upgrade_db(version)