From af8ca54d3eef7294e4aa31b6a8181f1bfc86b1f1 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Sat, 25 Oct 2025 10:21:21 +0100 Subject: [PATCH] Run Repo vacuum via Oban scheduled job This way if there's any resource contention to obtain a db connection, Oban can manage retries. --- config/config.exs | 4 +++- lib/music_library/worker/repo_vacuum.ex | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 lib/music_library/worker/repo_vacuum.ex diff --git a/config/config.exs b/config/config.exs index f4a6066a..10978c78 100644 --- a/config/config.exs +++ b/config/config.exs @@ -85,7 +85,9 @@ config :music_library, Oban, crontab: [ # every 12 hours {"0 */12 * * *", MusicLibrary.Worker.ApplyScrobbleRules}, - {"0 */12 * * *", MusicLibrary.Worker.PruneAssetCache} + {"0 */12 * * *", MusicLibrary.Worker.PruneAssetCache}, + # every day at 3 am, + {"0 3 * * *", MusicLibrary.Worker.RepoVacuum} ]} ] diff --git a/lib/music_library/worker/repo_vacuum.ex b/lib/music_library/worker/repo_vacuum.ex new file mode 100644 index 00000000..910ea037 --- /dev/null +++ b/lib/music_library/worker/repo_vacuum.ex @@ -0,0 +1,10 @@ +defmodule MusicLibrary.Worker.RepoVacuum do + use Oban.Worker, queue: :heavy_writes, max_attempts: 3 + + require Logger + + @impl Oban.Worker + def perform(_) do + MusicLibrary.Repo.vacuum() + end +end