From: Christian Kamm Date: Thu, 10 Jan 2019 08:21:48 +0000 (+0100) Subject: sqlite: Set exclusive locking_mode to avoid WAL issues #6881 X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~21^2~468^2~345 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b4e73690b7c4622d5ae8fb3b4195f2b46407832f;p=nextcloud-desktop.git sqlite: Set exclusive locking_mode to avoid WAL issues #6881 Can be overridden with OWNCLOUD_SQLITE_LOCKING_MODE --- diff --git a/src/common/syncjournaldb.cpp b/src/common/syncjournaldb.cpp index d112c64e7..9f321e362 100644 --- a/src/common/syncjournaldb.cpp +++ b/src/common/syncjournaldb.cpp @@ -303,6 +303,18 @@ bool SyncJournalDb::checkConnect() qCInfo(lcDb) << "sqlite3 version" << pragma1.stringValue(0); } + // Set locking mode to avoid issues with WAL on Windows + static QByteArray locking_mode_env = qgetenv("OWNCLOUD_SQLITE_LOCKING_MODE"); + if (locking_mode_env.isEmpty()) + locking_mode_env = "EXCLUSIVE"; + pragma1.prepare("PRAGMA locking_mode=" + locking_mode_env + ";"); + if (!pragma1.exec()) { + return sqlFail("Set PRAGMA locking_mode", pragma1); + } else { + pragma1.next(); + qCInfo(lcDb) << "sqlite3 locking_mode=" << pragma1.stringValue(0); + } + pragma1.prepare("PRAGMA journal_mode=" + _journalMode + ";"); if (!pragma1.exec()) { return sqlFail("Set PRAGMA journal_mode", pragma1);