Merge pull request 'Don’t retry delivery to explicitly deleted inboxes' (#968) from Oneric/akkoma:delivery_to_gone into develop

Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/968
This commit is contained in:
Oneric 2025-08-23 15:52:28 +00:00
commit ca15f8f6c0
2 changed files with 26 additions and 6 deletions

View file

@ -98,16 +98,25 @@ defp collect_apdelivery_error(:stop, %{result: {_, reason}}) do
process_fail_reason(reason)
end
defp collect_apdelivery_error(_, _) do
defp collect_apdelivery_error(state, res) do
Logger.info("Unknown AP delivery result: #{inspect(state)}, #{inspect(res)}")
"cause_unknown"
end
defp process_fail_reason(error) do
case error do
error when is_binary(error) -> error
error when is_atom(error) -> "#{error}"
%{status: code} when is_number(code) -> "http_#{code}"
_ -> "error_unknown"
error when is_binary(error) ->
error
error when is_atom(error) ->
"#{error}"
%{status: code} when is_number(code) ->
"http_#{code}"
_ ->
Logger.notice("Unusual AP delivery error mapped to 'unknown': #{inspect(error)}")
"error_unknown"
end
end

View file

@ -34,6 +34,17 @@ def perform(%Job{
end
def perform(%Job{args: %{"op" => "publish_one", "module" => module_name, "params" => params}}) do
Federator.perform(:publish_one, String.to_existing_atom(module_name), params)
res = Federator.perform(:publish_one, String.to_existing_atom(module_name), params)
case res do
# instance / actor was explicitly deleted; theres nothing to deliver to anymore
# since we dont know whether the whole instance is gone or just this actor,
# do NOT immediately mark the instance as unreachable
{:error, %{status: 410}} ->
:ok
res ->
res
end
end
end