commit: 12c052551bcd6b7871ccde5b9228315b89f45e01
parent f17f92105bff555d2d372ff2ec053fe40fa1b41b
Author: Mark Felder <feld@feld.me>
Date: Sun, 14 Jan 2024 13:23:17 -0500
Allow the Remote Fetcher to attempt fetching an unreachable instance
Diffstat:
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
@@ -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
@@ -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
@@ -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)