From d8b7efeebc715bbd31048bc1e5f53b99b8ba7493 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Thu, 7 Nov 2024 21:06:23 +0000 Subject: [PATCH] Use dedicated http client pool for MusicBrainz --- lib/music_brainz/api_impl.ex | 4 ++-- lib/music_brainz/supervisor.ex | 16 ++++++++++++++++ lib/music_library/application.ex | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 lib/music_brainz/supervisor.ex diff --git a/lib/music_brainz/api_impl.ex b/lib/music_brainz/api_impl.ex index 39c75210..62e34ac1 100644 --- a/lib/music_brainz/api_impl.ex +++ b/lib/music_brainz/api_impl.ex @@ -249,7 +249,7 @@ defmodule MusicBrainz.APIImpl do Logger.debug("Fetching data from #{url}") - case Finch.request(req, MusicLibrary.Finch) do + case Finch.request(req, MusicBrainz.Finch) do {:ok, response} when response.status == 200 -> {:ok, Jason.decode!(response.body)} @@ -268,7 +268,7 @@ defmodule MusicBrainz.APIImpl do Logger.debug("Fetching data from #{url}") - case Finch.request(req, MusicLibrary.Finch) do + case Finch.request(req, MusicBrainz.Finch) do {:ok, response} when response.status == 200 -> {:ok, response.body} diff --git a/lib/music_brainz/supervisor.ex b/lib/music_brainz/supervisor.ex new file mode 100644 index 00000000..629de2df --- /dev/null +++ b/lib/music_brainz/supervisor.ex @@ -0,0 +1,16 @@ +defmodule MusicBrainz.Supervisor do + use Supervisor + + def start_link(config) do + Supervisor.start_link(__MODULE__, config, name: __MODULE__) + end + + @impl true + def init(_config) do + children = [ + {Finch, name: MusicBrainz.Finch} + ] + + Supervisor.init(children, strategy: :one_for_one) + end +end diff --git a/lib/music_library/application.ex b/lib/music_library/application.ex index 85e3c707..d5759b0e 100644 --- a/lib/music_library/application.ex +++ b/lib/music_library/application.ex @@ -10,11 +10,11 @@ defmodule MusicLibrary.Application do children = [ MusicLibraryWeb.Telemetry, MusicLibrary.Repo, - {Finch, name: MusicLibrary.Finch}, {Ecto.Migrator, repos: Application.fetch_env!(:music_library, :ecto_repos), skip: skip_migrations?()}, {DNSCluster, query: Application.get_env(:music_library, :dns_cluster_query) || :ignore}, {Phoenix.PubSub, name: MusicLibrary.PubSub}, + MusicBrainz.Supervisor, {LastFm.Supervisor, last_fm_config()}, # Start a worker by calling: MusicLibrary.Worker.start_link(arg) # {MusicLibrary.Worker, arg},