aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorrinpatch <rinpatch@sdf.org>2019-01-01 18:55:59 +0000
committerrinpatch <rinpatch@sdf.org>2019-01-01 18:55:59 +0000
commit34fa7090158315eb0c8304c6b496f23338f9e1c6 (patch)
tree88de8bfc58027aeffa58f578b224d0517b004f1f /lib
parentb9ac7067ebef902be937de3889b8a62cbf1de9da (diff)
parent1a0391c8a474c282823d3b2ab7a0cae62328c5b3 (diff)
downloadpleroma-34fa7090158315eb0c8304c6b496f23338f9e1c6.tar.gz
Merge branch 'configurable-federator' into 'develop'
Make Federator options configurable. See merge request pleroma/pleroma!615
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/federator/federator.ex3
-rw-r--r--lib/pleroma/web/federator/retry_queue.ex19
2 files changed, 8 insertions, 14 deletions
diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex
index d25bfc0c1..f3a0e18b8 100644
--- a/lib/pleroma/web/federator/federator.ex
+++ b/lib/pleroma/web/federator/federator.ex
@@ -17,7 +17,6 @@ defmodule Pleroma.Web.Federator do
@websub Application.get_env(:pleroma, :websub)
@ostatus Application.get_env(:pleroma, :ostatus)
- @max_jobs 20
def init(args) do
{:ok, args}
@@ -168,7 +167,7 @@ defmodule Pleroma.Web.Federator do
end
def maybe_start_job(running_jobs, queue) do
- if :sets.size(running_jobs) < @max_jobs && queue != [] do
+ if :sets.size(running_jobs) < Pleroma.Config.get([__MODULE__, :max_jobs]) && queue != [] do
{{type, payload}, queue} = queue_pop(queue)
{:ok, pid} = Task.start(fn -> handle(type, payload) end)
mref = Process.monitor(pid)
diff --git a/lib/pleroma/web/federator/retry_queue.ex b/lib/pleroma/web/federator/retry_queue.ex
index c57bbb77c..230a2c939 100644
--- a/lib/pleroma/web/federator/retry_queue.ex
+++ b/lib/pleroma/web/federator/retry_queue.ex
@@ -7,12 +7,6 @@ defmodule Pleroma.Web.Federator.RetryQueue do
require Logger
- # seconds
- @initial_timeout 30
- @max_retries 5
-
- @max_jobs 20
-
def init(args) do
queue_table = :ets.new(:pleroma_retry_queue, [:bag, :protected])
@@ -21,7 +15,7 @@ defmodule Pleroma.Web.Federator.RetryQueue do
def start_link() do
enabled =
- if Mix.env() == :test, do: true, else: Pleroma.Config.get([:retry_queue, :enabled], false)
+ if Mix.env() == :test, do: true, else: Pleroma.Config.get([__MODULE__, :enabled], false)
if enabled do
Logger.info("Starting retry queue")
@@ -54,7 +48,7 @@ defmodule Pleroma.Web.Federator.RetryQueue do
end
def get_retry_params(retries) do
- if retries > @max_retries do
+ if retries > Pleroma.Config.get([__MODULE__, :max_retries]) do
{:drop, "Max retries reached"}
else
{:retry, growth_function(retries)}
@@ -108,12 +102,12 @@ defmodule Pleroma.Web.Federator.RetryQueue do
current_time = DateTime.to_unix(DateTime.utc_now())
n_running_jobs = :sets.size(running_jobs)
- if n_running_jobs < @max_jobs do
+ if n_running_jobs < Pleroma.Config.get([__MODULE__, :max_jobs]) do
n_ready_jobs = ets_count_expires(queue_table, current_time)
if n_ready_jobs > 0 do
# figure out how many we could start
- available_job_slots = @max_jobs - n_running_jobs
+ available_job_slots = Pleroma.Config.get([__MODULE__, :max_jobs]) - n_running_jobs
start_n_jobs(running_jobs, queue_table, current_time, available_job_slots)
else
running_jobs
@@ -228,12 +222,13 @@ defmodule Pleroma.Web.Federator.RetryQueue do
if Mix.env() == :test do
defp growth_function(_retries) do
- _shutit = @initial_timeout
+ _shutit = Pleroma.Config.get([__MODULE__, :initial_timeout])
DateTime.to_unix(DateTime.utc_now()) - 1
end
else
defp growth_function(retries) do
- round(@initial_timeout * :math.pow(retries, 3)) + DateTime.to_unix(DateTime.utc_now())
+ round(Pleroma.Config.get([__MODULE__, :initial_timeout]) * :math.pow(retries, 3)) +
+ DateTime.to_unix(DateTime.utc_now())
end
end