forked from platypush/platypush
A more robust cron start logic
If may happen (usually because of a race condition) that a cronjob has already been started, but it hasn't yet changed its status from IDLE to RUNNING when the scheduler checks it. This fix guards the application against such events. If they occur, we should just report them and move on, not terminate the whole scheduler.
This commit is contained in:
parent
a5db599268
commit
b8215d2736
1 changed files with 4 additions and 1 deletions
|
@ -153,7 +153,10 @@ class CronScheduler(threading.Thread):
|
||||||
for (job_name, job_config) in self.jobs_config.items():
|
for (job_name, job_config) in self.jobs_config.items():
|
||||||
job = self._get_job(name=job_name, config=job_config)
|
job = self._get_job(name=job_name, config=job_config)
|
||||||
if job.state == CronjobState.IDLE:
|
if job.state == CronjobState.IDLE:
|
||||||
job.start()
|
try:
|
||||||
|
job.start()
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f'Could not start cronjob {job_name}: {e}')
|
||||||
|
|
||||||
t_before_wait = get_now().timestamp()
|
t_before_wait = get_now().timestamp()
|
||||||
self._should_stop.wait(timeout=self._poll_seconds)
|
self._should_stop.wait(timeout=self._poll_seconds)
|
||||||
|
|
Loading…
Reference in a new issue