summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorfeld <feld@feld.me>2024-08-19 16:48:25 +0000
committerfeld <feld@feld.me>2024-08-19 16:48:25 +0000
commit12d682c62f45917182ca22b4ce8c7a98d8a9b4dd (patch)
tree8fe858b7997070c5c4354472cdb48c644d2e2c65 /lib
parent2f5a1db56e33ec83826e0e48f6ab1f6601d39fc0 (diff)
parent089fa4d1463dcc9b64d9a536d9dcfc4287c150c3 (diff)
downloadpleroma-12d682c62f45917182ca22b4ce8c7a98d8a9b4dd.tar.gz
pleroma-12d682c62f45917182ca22b4ce8c7a98d8a9b4dd.zip
Merge branch 'remote-fetcher-fixes' into 'develop'
Improve Remote Object Fetcher error handling, Oban See merge request pleroma/pleroma!4230
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/object/fetcher.ex38
-rw-r--r--lib/pleroma/workers/remote_fetcher_worker.ex23
2 files changed, 21 insertions, 40 deletions
diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex
index c0f671dd4..9d9a201ca 100644
--- a/lib/pleroma/object/fetcher.ex
+++ b/lib/pleroma/object/fetcher.ex
@@ -73,50 +73,22 @@ defmodule Pleroma.Object.Fetcher do
{:object, data, Object.normalize(activity, fetch: false)} do
{:ok, object}
else
- {:allowed_depth, false} = e ->
- log_fetch_error(id, e)
- {:error, :allowed_depth}
-
- {:containment, reason} = e ->
- log_fetch_error(id, e)
- {:error, reason}
-
- {:transmogrifier, {:error, {:reject, reason}}} = e ->
- log_fetch_error(id, e)
- {:reject, reason}
-
- {:transmogrifier, {:reject, reason}} = e ->
- log_fetch_error(id, e)
- {:reject, reason}
-
- {:transmogrifier, reason} = e ->
- log_fetch_error(id, e)
- {:error, reason}
-
- {:object, data, nil} ->
- reinject_object(%Object{}, data)
-
{:normalize, object = %Object{}} ->
{:ok, object}
{:fetch_object, %Object{} = object} ->
{:ok, object}
- {:fetch, {:error, reason}} = e ->
- log_fetch_error(id, e)
- {:error, reason}
+ {:object, data, nil} ->
+ reinject_object(%Object{}, data)
e ->
- log_fetch_error(id, e)
- {:error, e}
+ Logger.metadata(object: id)
+ Logger.error("Object rejected while fetching #{id} #{inspect(e)}")
+ e
end
end
- defp log_fetch_error(id, error) do
- Logger.metadata(object: id)
- Logger.error("Object rejected while fetching #{id} #{inspect(error)}")
- end
-
defp prepare_activity_params(data) do
%{
"type" => "Create",
diff --git a/lib/pleroma/workers/remote_fetcher_worker.ex b/lib/pleroma/workers/remote_fetcher_worker.ex
index e43765733..9d3f1ec53 100644
--- a/lib/pleroma/workers/remote_fetcher_worker.ex
+++ b/lib/pleroma/workers/remote_fetcher_worker.ex
@@ -13,17 +13,26 @@ defmodule Pleroma.Workers.RemoteFetcherWorker do
{:ok, _object} ->
:ok
- {:reject, reason} ->
+ {:allowed_depth, false} ->
+ {:cancel, :allowed_depth}
+
+ {:containment, reason} ->
{:cancel, reason}
- {:error, :forbidden} ->
- {:cancel, :forbidden}
+ {:transmogrifier, reason} ->
+ {:cancel, reason}
- {:error, :not_found} ->
- {:cancel, :not_found}
+ {:fetch, {:error, :forbidden = reason}} ->
+ {:cancel, reason}
- {:error, :allowed_depth} ->
- {:cancel, :allowed_depth}
+ {:fetch, {:error, :not_found = reason}} ->
+ {:cancel, reason}
+
+ {:fetch, {:error, {:content_type, _}} = reason} ->
+ {:cancel, reason}
+
+ {:fetch, {:error, reason}} ->
+ {:error, reason}
{:error, _} = e ->
e