From f61e1edbcb9d56c89f783730b18064ca14857dc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20HUBERT=20/=20PALO-IT?= Date: Tue, 14 Nov 2023 11:18:52 +0100 Subject: [PATCH 1/2] enable SQLite WAL --- .../src/commands/serve_command.rs | 2 +- .../src/dependency_injection/builder.rs | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/mithril-aggregator/src/commands/serve_command.rs b/mithril-aggregator/src/commands/serve_command.rs index 852df489338..075b3ba8f1d 100644 --- a/mithril-aggregator/src/commands/serve_command.rs +++ b/mithril-aggregator/src/commands/serve_command.rs @@ -164,7 +164,7 @@ impl ServeCommand { } join_set.spawn(async { tokio::signal::ctrl_c().await.map_err(|e| e.to_string()) }); - dependencies_builder.vanish(); + dependencies_builder.vanish().await; if let Err(e) = join_set.join_next().await.unwrap()? { crit!("A critical error occurred: {e}"); diff --git a/mithril-aggregator/src/dependency_injection/builder.rs b/mithril-aggregator/src/dependency_injection/builder.rs index a7a1aa29ea7..69b7eb0f083 100644 --- a/mithril-aggregator/src/dependency_injection/builder.rs +++ b/mithril-aggregator/src/dependency_injection/builder.rs @@ -258,6 +258,13 @@ impl DependenciesBuilder { } // configure session + connection + .execute("pragma journal_mode = wal; pragma synchronous = normal;") + .map_err(|e| DependenciesBuilderError::Initialization { + message: "SQLite initialization: could not enable WAL.".to_string(), + error: Some(e.into()), + })?; + connection .execute("pragma foreign_keys=true") .map_err(|e| DependenciesBuilderError::Initialization { @@ -273,6 +280,12 @@ impl DependenciesBuilder { Ok(connection) } + async fn drop_sqlite_connection(&self) { + if let Some(connection) = &self.sqlite_connection { + let _ = connection.execute("pragma analysis_limit=400; pragma optimize;"); + } + } + /// Get SQLite connection pub async fn get_sqlite_connection(&mut self) -> Result> { if self.sqlite_connection.is_none() { @@ -1196,5 +1209,7 @@ impl DependenciesBuilder { } /// Remove the dependencies builder from memory to release Arc. - pub fn vanish(self) {} + pub async fn vanish(self) { + self.drop_sqlite_connection().await; + } } From c77fa80aae23c2890c6206331728ea0afbc43fc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20HUBERT=20/=20PALO-IT?= Date: Tue, 14 Nov 2023 14:38:20 +0100 Subject: [PATCH 2/2] update version --- Cargo.lock | 2 +- mithril-aggregator/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bd47eb91e59..b7c1ac43149 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2179,7 +2179,7 @@ dependencies = [ [[package]] name = "mithril-aggregator" -version = "0.4.9" +version = "0.4.10" dependencies = [ "anyhow", "async-trait", diff --git a/mithril-aggregator/Cargo.toml b/mithril-aggregator/Cargo.toml index 696a2e85889..004294586af 100644 --- a/mithril-aggregator/Cargo.toml +++ b/mithril-aggregator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mithril-aggregator" -version = "0.4.9" +version = "0.4.10" description = "A Mithril Aggregator server" authors = { workspace = true } edition = { workspace = true }