diff --git a/lib/quantum.ex b/lib/quantum.ex index aaca086..7026bab 100644 --- a/lib/quantum.ex +++ b/lib/quantum.ex @@ -111,6 +111,9 @@ defmodule Quantum do * `:task_supervisor_name` - GenServer name of task supervisor \\ *(unstable, may break without major release until declared stable)* + * `:include_task_supervisor` - Include task supervisor in supervisor tree \\ + *(unstable, may break without major release until declared stable)* + * `:timeout` - Sometimes, you may come across GenServer timeout errors esp. when you have too many jobs or high load. The default `GenServer.call/3` timeout is `5_000`. @@ -290,6 +293,7 @@ defmodule Quantum do |> Keyword.put_new(:name, scheduler) |> update_in([:schedule], &Normalizer.normalize_schedule/1) |> Keyword.put_new(:task_supervisor_name, Module.concat(scheduler, TaskSupervisor)) + |> Keyword.put_new(:include_task_supervisor, true) |> Keyword.put_new(:storage_name, Module.concat(scheduler, Storage)) |> Keyword.put_new(:task_registry_name, Module.concat(scheduler, TaskRegistry)) |> Keyword.put_new(:clock_broadcaster_name, Module.concat(scheduler, ClockBroadcaster)) diff --git a/lib/quantum/supervisor.ex b/lib/quantum/supervisor.ex index 7aba015..604bc89 100644 --- a/lib/quantum/supervisor.ex +++ b/lib/quantum/supervisor.ex @@ -16,6 +16,7 @@ defmodule Quantum.Supervisor do storage: storage, scheduler: ^scheduler, task_supervisor_name: task_supervisor_name, + include_task_supervisor: include_task_supervisor, storage_name: storage_name, task_registry_name: task_registry_name, clock_broadcaster_name: clock_broadcaster_name, @@ -91,7 +92,7 @@ defmodule Quantum.Supervisor do Supervisor.init( [ - {Task.Supervisor, task_supervisor_opts}, + include_task_supervisor && {Task.Supervisor, task_supervisor_opts}, {storage, storage_opts}, {Quantum.ClockBroadcaster, clock_broadcaster_opts}, {Quantum.TaskRegistry, task_registry_opts}, @@ -99,7 +100,8 @@ defmodule Quantum.Supervisor do {Quantum.ExecutionBroadcaster, execution_broadcaster_opts}, {Quantum.NodeSelectorBroadcaster, node_selector_broadcaster_opts}, {Quantum.ExecutorSupervisor, executor_supervisor_opts} - ], + ] + |> Enum.filter(& &1), strategy: :rest_for_one ) end