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 f49e8cc..12ae4c0 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. 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 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() {