Hi guys! I am trying to implement quantum in my project, and I am making tests in a different project. My goal is to use a different file inside my job scheduler. my devs.exs
config :test, Test.Schedulder,
jobs: [
# Every minute
# {"* * * * *", fn -> IO.puts("Hello QUANTUM!") end},
# {"* * * * *", task: {Test.CleanBase, :clean, []}}
jobs: [
phoenix_job: [
schedule: "* * * * *",
task: {CleanBase, :clean, []},
]
]
]
I do use {:quantum, "~> 3.0"}
And this is CleanBase.ex
defmodule Test.CleanBase do
def clean do
IO.puts("CLEAN BASE TEST")
end
end
However, everytime I am trying to run mix phx.server
I am getting this error:
Compiling 16 files (.ex)
Generated test app
[info] Running TestWeb.Endpoint with cowboy 2.9.0 at 127.0.0.1:4000 (http)
[info] Access TestWeb.Endpoint at http://localhost:4000
[watch] build finished, watching for changes...
[debug] [:nonode@nohost][Elixir.Quantum.JobBroadcaster] Loading Initial Jobs from Config
[debug] [:nonode@nohost][Elixir.Quantum.ExecutionBroadcaster] Adding job :jobs
[error] GenServer Test.Schedulder.ExecutionBroadcaster terminating
** (FunctionClauseError) no function clause matching in Crontab.Scheduler.get_next_run_date/3
(crontab 1.1.11) lib/crontab/scheduler.ex:47: Crontab.Scheduler.get_next_run_date(nil, ~N[2022-04-02 17:12:22], 10000)
(quantum 3.1.0) lib/quantum/execution_broadcaster.ex:265: Quantum.ExecutionBroadcaster.get_next_execution_time/2
(quantum 3.1.0) lib/quantum/execution_broadcaster.ex:236: Quantum.ExecutionBroadcaster.add_job_to_state/3
(elixir 1.13.3) lib/enum.ex:2396: Enum."-reduce/3-lists^foldl/2-0-"/3
(quantum 3.1.0) lib/quantum/execution_broadcaster.ex:170: Quantum.ExecutionBroadcaster.initialize_jobs/2
(quantum 3.1.0) lib/quantum/execution_broadcaster.ex:158: Quantum.ExecutionBroadcaster.handle_event/2
(quantum 3.1.0) lib/quantum/execution_broadcaster.ex:91: anonymous fn/2 in Quantum.ExecutionBroadcaster.handle_events/3
(elixir 1.13.3) lib/enum.ex:2396: Enum."-reduce/3-lists^foldl/2-0-"/3
(quantum 3.1.0) lib/quantum/execution_broadcaster.ex:90: Quantum.ExecutionBroadcaster.handle_events/3
(gen_stage 1.1.2) lib/gen_stage.ex:2471: GenStage.consumer_dispatch/6
(gen_stage 1.1.2) lib/gen_stage.ex:2660: GenStage.take_pc_events/3
(stdlib 3.17.1) gen_server.erl:695: :gen_server.try_dispatch/4
(stdlib 3.17.1) gen_server.erl:771: :gen_server.handle_msg/6
(stdlib 3.17.1) proc_lib.erl:226: :proc_lib.init_p_do_apply/3
Last message: {:"$gen_producer", {#PID<0.695.0>, #Reference<0.2275693489.3920625665.21504>}, {:ask, 1000}}
State: %Quantum.ExecutionBroadcaster.State{debug_logging: true, execution_timeline: [], scheduler: Test.Schedulder, storage: Quantum.Storage.Noop, storage_pid: nil, uninitialized_jobs: []}
I do have Schedulder.ex, where I do have created otp_app. Also, I have added it into start()
method in application.ex
I am really grateful for any hints!!