Make MediaProxy failure tracking less brutal
authorrinpatch <rinpatch@sdf.org>
Fri, 11 Oct 2019 19:52:38 +0000 (22:52 +0300)
committerrinpatch <rinpatch@sdf.org>
Fri, 11 Oct 2019 19:52:38 +0000 (22:52 +0300)
The current failure tracking mechanism will never request anything that
didn't respond with a success, 403, 404, or 5xx codes. This is causing
issues when using in real fediverse because of weird status codes
some software has and timeouts being frequent. This patch changes
failure tracking mechanism to only never request the url again if it
responded with 400, 204, or the body is too large, otherwise it can be
re-requested in 60 seconds.

lib/pleroma/reverse_proxy/reverse_proxy.ex

index 78144cae31400f82969c4bec9df08253570ef5d2..2ed7193150729b906f1f50ee5fffc9c98e7130e5 100644 (file)
@@ -401,11 +401,9 @@ defmodule Pleroma.ReverseProxy do
 
   defp client, do: Pleroma.ReverseProxy.Client
 
-  defp track_failed_url(url, code, opts) do
-    code = to_string(code)
-
+  defp track_failed_url(url, error, opts) do
     ttl =
-      if code in ["403", "404"] or String.starts_with?(code, "5") do
+      unless error in [:body_too_large, 400, 204] do
         Keyword.get(opts, :failed_request_ttl, @failed_request_ttl)
       else
         nil