diff --git a/radicle-cli/examples/rad-config.md b/radicle-cli/examples/rad-config.md index dda65e1c..bd3c6840 100644 --- a/radicle-cli/examples/rad-config.md +++ b/radicle-cli/examples/rad-config.md @@ -26,6 +26,9 @@ $ rad config }, "connect": [], "externalAddresses": [], + "db": { + "journalMode": "rollback" + }, "tor": null, "network": "main", "log": "INFO", diff --git a/radicle-httpd/src/api/v1/profile.rs b/radicle-httpd/src/api/v1/profile.rs index 5916f902..7814803a 100644 --- a/radicle-httpd/src/api/v1/profile.rs +++ b/radicle-httpd/src/api/v1/profile.rs @@ -89,6 +89,7 @@ mod routes { }, "connect": [], "externalAddresses": [], + "db": { "journalMode": "rollback" }, "tor": null, "network": "main", "log": "INFO", diff --git a/radicle-node/src/runtime.rs b/radicle-node/src/runtime.rs index 0e8729e3..9406f129 100644 --- a/radicle-node/src/runtime.rs +++ b/radicle-node/src/runtime.rs @@ -156,7 +156,7 @@ impl Runtime { let policy = config.policy; log::info!(target: "node", "Opening node database.."); - let db = home.database_mut()?; + let db = home.database_mut()?.journal_mode(config.db.journal_mode)?; let mut stores: service::Stores<_> = db.clone().into(); log::info!(target: "node", "Opening policy database.."); diff --git a/radicle/src/node/config.rs b/radicle/src/node/config.rs index 4cc1a6a6..5d1bb160 100644 --- a/radicle/src/node/config.rs +++ b/radicle/src/node/config.rs @@ -7,7 +7,7 @@ use localtime::LocalDuration; use crate::node; use crate::node::policy::{Policy, Scope}; -use crate::node::{Address, Alias, NodeId}; +use crate::node::{db, Address, Alias, NodeId}; /// Target number of peers to maintain connections to. pub const TARGET_OUTBOUND_PEERS: usize = 8; @@ -260,6 +260,14 @@ pub enum TorConfig { Transparent, } +/// Database configuration. +#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct DbConfig { + #[serde(default)] + pub journal_mode: db::JournalMode, +} + /// Service configuration. #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] #[serde(rename_all = "camelCase")] @@ -279,6 +287,9 @@ pub struct Config { /// Specify the node's public addresses #[serde(default)] pub external_addresses: Vec
, + /// Database config. + #[serde(default)] + pub db: DbConfig, /// Tor configuration. #[serde(default)] pub tor: Option