From a0b8e3c84280c11ab43b7660414b64b55c1b7259 Mon Sep 17 00:00:00 2001 From: FloatingGhost Date: Tue, 8 Nov 2022 10:39:01 +0000 Subject: [PATCH] Don't mess with the cache on metadata update --- lib/pleroma/application.ex | 2 +- lib/pleroma/instances/instance.ex | 21 +++++++------------ test/pleroma/instances/instance_test.exs | 12 +++++------ .../web/admin_api/views/report_view_test.exs | 2 +- 4 files changed, 16 insertions(+), 21 deletions(-) diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index a78924dfa..b9bcad40c 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -157,7 +157,7 @@ defp cachex_children do build_cachex("failed_proxy_url", limit: 2500), build_cachex("banned_urls", default_ttl: :timer.hours(24 * 30), limit: 5_000), build_cachex("translations", default_ttl: :timer.hours(24 * 30), limit: 2500), - build_cachex("instances", default_ttl: :timer.hours(24), limit: 2500) + build_cachex("instances", default_ttl: :timer.hours(24), ttl_interval: 1000, limit: 2500) ] end diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index fcf3181bf..5ee408f21 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -176,17 +176,14 @@ defp do_update_metadata(%URI{host: host} = uri, existing_record) do favicon = scrape_favicon(uri) nodeinfo = scrape_nodeinfo(uri) - {:ok, instance} = - existing_record - |> changeset(%{ - host: host, - favicon: favicon, - nodeinfo: nodeinfo, - metadata_updated_at: NaiveDateTime.utc_now() - }) - |> Repo.update() - - @cachex.put(:instances_cache, "instances:#{host}", instance) + existing_record + |> changeset(%{ + host: host, + favicon: favicon, + nodeinfo: nodeinfo, + metadata_updated_at: NaiveDateTime.utc_now() + }) + |> Repo.update() else {:discard, "Does not require update"} end @@ -205,8 +202,6 @@ defp do_update_metadata(%URI{host: host} = uri, existing_record) do metadata_updated_at: NaiveDateTime.utc_now() }) |> Repo.insert() - - @cachex.put(:instances_cache, "instances:#{host}", instance) end end diff --git a/test/pleroma/instances/instance_test.exs b/test/pleroma/instances/instance_test.exs index adc847da5..6ec55c7b7 100644 --- a/test/pleroma/instances/instance_test.exs +++ b/test/pleroma/instances/instance_test.exs @@ -136,7 +136,7 @@ test "Scrapes favicon URLs and nodeinfo" do } end) - assert {:ok, true} == + assert {:ok, %Instance{host: "favicon.example.org"}} = Instance.update_metadata(URI.parse("https://favicon.example.org/")) {:ok, instance} = Instance.get_cached_by_url("https://favicon.example.org/") @@ -177,7 +177,7 @@ test "Does not retain favicons that are too long" do } end) - assert {:ok, true} == + assert {:ok, %Instance{host: "long-favicon.example.org"}} = Instance.update_metadata(URI.parse("https://long-favicon.example.org/")) {:ok, instance} = Instance.get_cached_by_url("https://long-favicon.example.org/") @@ -214,7 +214,7 @@ test "Handles not getting a favicon URL properly" do end) refute capture_log(fn -> - assert {:ok, true} = + assert {:ok, %Instance{host: "no-favicon.example.org"}} = Instance.update_metadata(URI.parse("https://no-favicon.example.org/")) end) =~ "Instance.update_metadata(\"https://no-favicon.example.org/\") error: " end @@ -241,7 +241,7 @@ test "doesn't continue scraping nodeinfo if we can't find a link" do } end) - assert {:ok, true} == + assert {:ok, %Instance{host: "bad-nodeinfo.example.org"}} = Instance.update_metadata(URI.parse("https://bad-nodeinfo.example.org/")) {:ok, instance} = Instance.get_cached_by_url("https://bad-nodeinfo.example.org/") @@ -277,7 +277,7 @@ test "doesn't store bad json in the nodeinfo" do } end) - assert {:ok, true} == + assert {:ok, %Instance{host: "bad-nodeinfo.example.org"}} = Instance.update_metadata(URI.parse("https://bad-nodeinfo.example.org/")) {:ok, instance} = Instance.get_cached_by_url("https://bad-nodeinfo.example.org/") @@ -315,7 +315,7 @@ test "doesn't store incredibly long json nodeinfo" do } end) - assert {:ok, true} == + assert {:ok, %Instance{host: "bad-nodeinfo.example.org"}} = Instance.update_metadata(URI.parse("https://bad-nodeinfo.example.org/")) {:ok, instance} = Instance.get_cached_by_url("https://bad-nodeinfo.example.org/") diff --git a/test/pleroma/web/admin_api/views/report_view_test.exs b/test/pleroma/web/admin_api/views/report_view_test.exs index 093e2d95d..1c115528a 100644 --- a/test/pleroma/web/admin_api/views/report_view_test.exs +++ b/test/pleroma/web/admin_api/views/report_view_test.exs @@ -45,7 +45,7 @@ test "renders a report" do ReportView.render("show.json", Report.extract_report_info(activity)) |> Map.delete(:created_at) - assert result == expected + assert Jason.encode!(result) == Jason.encode!(expected) end test "includes reported statuses" do