- 
          
 - 
                Notifications
    
You must be signed in to change notification settings  - Fork 152
 
Description
We found our jobs not running, and it turned out our Quantum based scheduler had terminated.
Our jobs are configured with timezone: "Australia/Adelaide", and Adelaide had daylight savings move the clock backwards one hour yesterday, resulting in ambiguous time:
<Ambiguous(#DateTime<2019-04-07 02:00:06.340067+10:30 ACDT Australia/Adelaide> ~ #DateTime<2019-04-07 01:00:06.340067+09:30 ACST Australia/Adelaide>)
Note this is different from #321 where a time does not exist due to moving forward!
This fails to convert to UTC resulting in an error and eventual termination:
** (FunctionClauseError) no function clause matching in DateTime.to_naive/1
    (elixir) lib/calendar/datetime.ex:301: DateTime.to_naive(#<Ambiguous(#DateTime<2019-04-07 02:00:06.340067+10:30 ACDT Australia/Adelaide> ~ #DateTime<2019-04-07 01:00:06.340067+09:30 ACST Australia/Adelaide>)>)
    (quantum) lib/quantum/execution_broadcaster.ex:313: Quantum.ExecutionBroadcaster.get_next_execution_time/2
    (quantum) lib/quantum/execution_broadcaster.ex:284: Quantum.ExecutionBroadcaster.add_job_to_state/2
    (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
    (quantum) lib/quantum/execution_broadcaster.ex:132: Quantum.ExecutionBroadcaster.handle_events/3
    (gen_stage) lib/gen_stage.ex:2329: GenStage.consumer_dispatch/6
    (gen_stage) lib/gen_stage.ex:2502: GenStage.take_pc_events/3
    (stdlib) gen_server.erl:637: :gen_server.try_dispatch/4
    (stdlib) gen_server.erl:711: :gen_server.handle_msg/6
    (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
I reproduced this by setting my system clock to 1:59am 7th April 2019 and running our app with jobs that start in less than an hour.
We're going to use UTC in our scheduler to work around.