summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Felder <feld@feld.me>2024-01-14 13:23:17 -0500
committerMark Felder <feld@feld.me>2024-01-14 14:05:43 -0500
commit12c052551bcd6b7871ccde5b9228315b89f45e01 (patch)
tree7ebf344c0672e836e48825e881d27b0b84bb78c7
parentf17f92105bff555d2d372ff2ec053fe40fa1b41b (diff)
Allow the Remote Fetcher to attempt fetching an unreachable instancehandle_object_fetch_failures
-rw-r--r--changelog.d/handle_object_fetch_failures2.change1
-rw-r--r--lib/pleroma/workers/remote_fetcher_worker.ex27
-rw-r--r--test/pleroma/workers/remote_fetcher_worker_test.exs13
3 files changed, 11 insertions, 30 deletions
diff --git a/changelog.d/handle_object_fetch_failures2.change b/changelog.d/handle_object_fetch_failures2.change
deleted file mode 100644
index f12350026..000000000
--- a/changelog.d/handle_object_fetch_failures2.change
+++ /dev/null
@@ -1 +0,0 @@
-Skip fetching objects from unreachable instances.
diff --git a/lib/pleroma/workers/remote_fetcher_worker.ex b/lib/pleroma/workers/remote_fetcher_worker.ex
index 7919969aa..d526a99cb 100644
--- a/lib/pleroma/workers/remote_fetcher_worker.ex
+++ b/lib/pleroma/workers/remote_fetcher_worker.ex
@@ -3,32 +3,27 @@
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Workers.RemoteFetcherWorker do
- alias Pleroma.Instances
alias Pleroma.Object.Fetcher
use Pleroma.Workers.WorkerHelper, queue: "remote_fetcher"
@impl Oban.Worker
def perform(%Job{args: %{"op" => "fetch_remote", "id" => id} = args}) do
- if Instances.reachable?(id) do
- case Fetcher.fetch_object_from_id(id, depth: args["depth"]) do
- {:ok, _object} ->
- :ok
+ case Fetcher.fetch_object_from_id(id, depth: args["depth"]) do
+ {:ok, _object} ->
+ :ok
- {:error, :forbidden} ->
- {:discard, :forbidden}
+ {:error, :forbidden} ->
+ {:discard, :forbidden}
- {:error, :not_found} ->
- {:discard, :not_found}
+ {:error, :not_found} ->
+ {:discard, :not_found}
- {:error, :allowed_depth} ->
- {:discard, :allowed_depth}
+ {:error, :allowed_depth} ->
+ {:discard, :allowed_depth}
- _ ->
- :error
- end
- else
- {:discard, "Unreachable instance"}
+ _ ->
+ :error
end
end
diff --git a/test/pleroma/workers/remote_fetcher_worker_test.exs b/test/pleroma/workers/remote_fetcher_worker_test.exs
index 493b10fdc..c30e773d4 100644
--- a/test/pleroma/workers/remote_fetcher_worker_test.exs
+++ b/test/pleroma/workers/remote_fetcher_worker_test.exs
@@ -6,13 +6,11 @@ defmodule Pleroma.Workers.RemoteFetcherWorkerTest do
use Pleroma.DataCase
use Oban.Testing, repo: Pleroma.Repo
- alias Pleroma.Instances
alias Pleroma.Workers.RemoteFetcherWorker
@deleted_object_one "https://deleted-404.example.com/"
@deleted_object_two "https://deleted-410.example.com/"
@unauthorized_object "https://unauthorized.example.com/"
- @unreachable_object "https://unreachable.example.com/"
@depth_object "https://depth.example.com/"
describe "RemoteFetcherWorker" do
@@ -59,17 +57,6 @@ defmodule Pleroma.Workers.RemoteFetcherWorkerTest do
})
end
- test "does not fetch an unreachable instance" do
- Instances.set_consistently_unreachable(@unreachable_object)
-
- refute Instances.reachable?(@unreachable_object)
-
- assert {:discard, _} =
- RemoteFetcherWorker.perform(%Oban.Job{
- args: %{"op" => "fetch_remote", "id" => @unreachable_object}
- })
- end
-
test "does not requeue an object that exceeded depth" do
clear_config([:instance, :federation_incoming_replies_max_depth], 0)