[#534] Configurable outgoing federation reachability timeout.

This commit is contained in:
Ivan Tashkinov 2019-01-25 15:10:21 +03:00
commit 656ed7c84a
4 changed files with 20 additions and 4 deletions

View file

@ -8,8 +8,20 @@ defmodule Pleroma.Instances do
defdelegate set_reachable(url), to: @adapter
defdelegate set_unreachable(url, unreachable_since \\ nil), to: @adapter
def reachability_time_threshold,
do: NaiveDateTime.add(NaiveDateTime.utc_now(), -30 * 24 * 3600, :second)
def reachability_datetime_threshold do
federation_reachability_timeout_days =
Pleroma.Config.get(:instance)[:federation_reachability_timeout_days] || 90
if federation_reachability_timeout_days > 0 do
NaiveDateTime.add(
NaiveDateTime.utc_now(),
-federation_reachability_timeout_days * 24 * 3600,
:second
)
else
~N[0000-01-01 00:00:00]
end
end
def host(url_or_host) when is_binary(url_or_host) do
if url_or_host =~ ~r/^http/i do

View file

@ -39,7 +39,8 @@ defmodule Pleroma.Instances.Instance do
Repo.all(
from(i in Instance,
where:
i.host in ^hosts and i.unreachable_since <= ^Instances.reachability_time_threshold(),
i.host in ^hosts and
i.unreachable_since <= ^Instances.reachability_datetime_threshold(),
select: i.host
)
)
@ -51,7 +52,8 @@ defmodule Pleroma.Instances.Instance do
!Repo.one(
from(i in Instance,
where:
i.host == ^host(url) and i.unreachable_since <= ^Instances.reachability_time_threshold(),
i.host == ^host(url) and
i.unreachable_since <= ^Instances.reachability_datetime_threshold(),
select: true
)
)