receiver_worker: don't reattempt invalid documents
Ideally we’d like to split this up more and count most invalid documents as an error, but silently drop e.g. Deletes for unknown objects. However, this is hard to extract from the changeset and jobs canceled with :discard don’t count as exceptions and I’m not aware of a idiomatic way to cancel further retries while retaining the exception status. Thus at least keep a log, but since superfluous "Delete"s seem kinda frequent, don't log at error, only info level.
This commit is contained in:
parent
9f4d3a936f
commit
be2c857845
1 changed files with 12 additions and 0 deletions
|
@ -3,6 +3,8 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.Workers.ReceiverWorker do
|
||||
require Logger
|
||||
|
||||
alias Pleroma.Web.Federator
|
||||
|
||||
use Pleroma.Workers.WorkerHelper, queue: "federator_incoming"
|
||||
|
@ -21,6 +23,16 @@ def perform(%Job{args: %{"op" => "incoming_ap_doc", "params" => params}}) do
|
|||
{:error, :already_present} ->
|
||||
{:discard, :already_present}
|
||||
|
||||
# invalid data or e.g. deleting an object we don't know about anyway
|
||||
{:error, {:error, {:validate, issue}}} ->
|
||||
Logger.info("Received invalid AP document: #{inspect(issue)}")
|
||||
{:discard, :invalid}
|
||||
|
||||
# rarer, but sometimes there’s an additional :error in front
|
||||
{:error, {:error, {:error, {:validate, issue}}}} ->
|
||||
Logger.info("Received invalid AP document: (3e) #{inspect(issue)}")
|
||||
{:discard, :invalid}
|
||||
|
||||
{:error, _} = e ->
|
||||
e
|
||||
|
||||
|
|
Loading…
Reference in a new issue