Deployment and lifecycle management for Nix
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

agent: avoid recreating schedule, log next run on add

+33 -21
+33 -21
apps/sower_agent/lib/sower_agent/scheduler.ex
··· 29 29 {:ok, cron} -> 30 30 job_name = job_name_sub(sid) 31 31 32 - case find_job(job_name) do 33 - nil -> 34 - Logger.info( 35 - msg: "Creating new subscription scheduler", 36 - sub_sid: sid, 37 - schedule: schedule 38 - ) 32 + job = 33 + case find_job(job_name) do 34 + nil -> 35 + new_job() 36 + |> Quantum.Job.set_name(job_name_sub(sid)) 39 37 40 - new_job() 41 - |> Quantum.Job.set_name(job_name_sub(sid)) 38 + job -> 39 + job 40 + end 42 41 43 - job -> 44 - Logger.info( 45 - msg: "Found existing subscription scheduler, refreshing", 46 - sub_sid: sid, 47 - schedule: schedule 48 - ) 49 - 50 - delete_job(job.name) 51 - job 52 - end 42 + job 53 43 |> Quantum.Job.set_timezone(get_timezone()) 54 44 |> Quantum.Job.set_schedule(cron) 55 45 |> Quantum.Job.set_overlap(false) ··· 58 48 end) 59 49 |> add_job() 60 50 61 - job_name 51 + # re-fetch the job since add_job is async 52 + job = find_job(job_name) 53 + 54 + tz = 55 + case job.timezone do 56 + :utc -> "Etc/UTC" 57 + tz when is_binary(tz) -> tz 58 + end 59 + 60 + next_run = 61 + job.schedule 62 + |> Crontab.Scheduler.get_next_run_date!(DateTime.now!(tz)) 63 + |> DateTime.to_iso8601() 64 + 65 + Logger.info( 66 + msg: "Setup subscription schedule", 67 + sub_sid: sid, 68 + schedule: schedule, 69 + job: job.name, 70 + schedule: job.schedule, 71 + next_run: next_run 72 + ) 73 + 74 + job.name 62 75 63 76 {:error, error} -> 64 77 Logger.error( 65 78 msg: "Failed to parse schedule", 66 79 error: error, 67 - schedule: schedule, 68 80 subscription_sid: sid 69 81 ) 70 82