From 4df686f49e50eebc0978f06cf33538bb270fb3c4 Mon Sep 17 00:00:00 2001 From: Miroslav Prasil Date: Mon, 18 Feb 2019 10:48:48 +0000 Subject: [PATCH 1/2] Add an option to not enable WAL (should help in #399) --- src/config.rs | 3 +++ src/main.rs | 12 +++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/config.rs b/src/config.rs index f49e8cc..dd3377d 100644 --- 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 + enable_db_wal: bool, false, def, true; }, /// Yubikey settings diff --git a/src/main.rs b/src/main.rs index 45c1fbe..db6488f 100644 --- 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() { From 0b903fc5f43a02d90551a95dc2a40cd28ff8a834 Mon Sep 17 00:00:00 2001 From: Miroslav Prasil Date: Mon, 18 Feb 2019 14:57:21 +0000 Subject: [PATCH 2/2] Extended the template file and refer to wiki --- .env.template | 8 ++++++++ src/config.rs | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.env.template b/.env.template index b388e6f..51494c5 100644 --- 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 index dd3377d..12ae4c0 100644 --- a/src/config.rs +++ b/src/config.rs @@ -254,7 +254,7 @@ make_config! { /// 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 + /// 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; },