From 162ef64de5d1a7a78747afb3660eb2c8bbe60b19 Mon Sep 17 00:00:00 2001 From: Ziinc Date: Thu, 4 Dec 2025 14:44:26 +0800 Subject: [PATCH 1/5] Conditionally include Task.Supervisor in Supervisor.init --- lib/quantum/supervisor.ex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/quantum/supervisor.ex b/lib/quantum/supervisor.ex index 7aba015..5c60638 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,7 @@ 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 From e8719d99e6f9dddf6b2e8547bfa21da8cb045d30 Mon Sep 17 00:00:00 2001 From: Ziinc Date: Thu, 4 Dec 2025 14:45:19 +0800 Subject: [PATCH 2/5] Add include_task_supervisor option to scheduler --- lib/quantum.ex | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/quantum.ex b/lib/quantum.ex index aaca086..e51ddc8 100644 --- a/lib/quantum.ex +++ b/lib/quantum.ex @@ -290,6 +290,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)) From 226a710967bfc31e97f1f17f2099f7e5b0a68a42 Mon Sep 17 00:00:00 2001 From: Ziinc Date: Thu, 4 Dec 2025 14:51:35 +0800 Subject: [PATCH 3/5] Fix syntax for Enum.filter in supervisor.ex --- lib/quantum/supervisor.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/quantum/supervisor.ex b/lib/quantum/supervisor.ex index 5c60638..6c6dacd 100644 --- a/lib/quantum/supervisor.ex +++ b/lib/quantum/supervisor.ex @@ -100,7 +100,7 @@ defmodule Quantum.Supervisor do {Quantum.ExecutionBroadcaster, execution_broadcaster_opts}, {Quantum.NodeSelectorBroadcaster, node_selector_broadcaster_opts}, {Quantum.ExecutorSupervisor, executor_supervisor_opts} - ] |> Enum.filter(&(&1), + ] |> Enum.filter(&(&1)), strategy: :rest_for_one ) end From aea58db6914bf92c4a8c4a3eb19b7fadc595e10b Mon Sep 17 00:00:00 2001 From: TzeYiing Date: Thu, 4 Dec 2025 15:04:31 +0800 Subject: [PATCH 4/5] chore: formatting --- lib/quantum/supervisor.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/quantum/supervisor.ex b/lib/quantum/supervisor.ex index 6c6dacd..604bc89 100644 --- a/lib/quantum/supervisor.ex +++ b/lib/quantum/supervisor.ex @@ -100,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)), + ] + |> Enum.filter(& &1), strategy: :rest_for_one ) end From 88534149bbf745353fca42a9b9570f5efefbf17d Mon Sep 17 00:00:00 2001 From: TzeYiing Date: Thu, 4 Dec 2025 15:26:54 +0800 Subject: [PATCH 5/5] docs: add :include_task_supervisor --- lib/quantum.ex | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/quantum.ex b/lib/quantum.ex index e51ddc8..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`.