commit 72de16fb8648a809c06056388fc0bc934eb6930c
parent d7eeaaf24952bc893ef6209d428c8d9b775b618b
Author: Daniel GarcĂa <dani-garcia@users.noreply.github.com>
Date: Mon, 18 Feb 2019 16:10:16 +0100
Merge pull request #404 from mprasil/disable_wal
Add an option to not enable WAL (should help in #399)
Diffstat:
3 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/.env.template b/.env.template
@@ -43,6 +43,14 @@
## It's recommended to also set 'ROCKET_CLI_COLORS=off'
# LOG_FILE=/path/to/log
+## Enable WAL for the DB
+## Set to false to avoid enabling WAL during startup.
+## Note that if the DB already has WAL enabled, you will also need to disable WAL in the DB,
+## this setting only prevents bitwarden_rs from automatically enabling it on start.
+## Please read project wiki page about this setting first before changing the value as it can
+## cause performance degradation or might render the service unable to start.
+# ENABLE_DB_WAL=true
+
## Disable icon downloading
## Set to true to disable icon downloading, this would still serve icons from $ICON_CACHE_FOLDER,
## but it won't produce any external network request. Needs to set $ICON_CACHE_TTL to 0,
diff --git a/src/config.rs b/src/config.rs
@@ -253,6 +253,9 @@ make_config! {
extended_logging: bool, false, def, true;
/// Log file path
log_file: String, false, option;
+
+ /// Enable DB WAL |> Turning this off might lead to worse performance, but might help if using bitwarden_rs on some exotic filesystems, that do not support WAL. Please make sure you read project wiki on the topic before changing this setting.
+ enable_db_wal: bool, false, def, true;
},
/// Yubikey settings
diff --git a/src/main.rs b/src/main.rs
@@ -168,11 +168,13 @@ fn check_db() {
}
// Turn on WAL in SQLite
- use diesel::RunQueryDsl;
- let connection = db::get_connection().expect("Can't conect to DB");
- diesel::sql_query("PRAGMA journal_mode=wal")
- .execute(&connection)
- .expect("Failed to turn on WAL");
+ if CONFIG.enable_db_wal() {
+ use diesel::RunQueryDsl;
+ let connection = db::get_connection().expect("Can't conect to DB");
+ diesel::sql_query("PRAGMA journal_mode=wal")
+ .execute(&connection)
+ .expect("Failed to turn on WAL");
+ }
}
fn check_rsa_keys() {