From f8c89230b769cf21ed4b01179c6fc408b0010ddb Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Thu, 15 Jul 2021 13:22:52 +0200 Subject: [PATCH] BUGFIX: if job is running, don't run --- src/Command/RunCommand.php | 5 +++++ src/Repository/Job.php | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/src/Command/RunCommand.php b/src/Command/RunCommand.php index ecc7da2..f53dfe1 100644 --- a/src/Command/RunCommand.php +++ b/src/Command/RunCommand.php @@ -34,6 +34,11 @@ class RunCommand extends Command { $jobRepo = new Job($this->kernel->getDbCon()); $jobId = (int)$input->getArgument('jobid'); + $jobRunning = $jobRepo->isLockedJob($jobId); + if($jobRunning) { + $output->writeln('Job is already running'); + return Command::FAILURE; + } $jobRepo->setJobRunning($jobId, true); $jobRepo->setTempVar($jobId, 'consolerun', true); $result = $jobRepo->runNow($jobId, true); diff --git a/src/Repository/Job.php b/src/Repository/Job.php index d558ab1..adcbd23 100644 --- a/src/Repository/Job.php +++ b/src/Repository/Job.php @@ -323,6 +323,14 @@ class Job extends Repository return; } + public function isLockedJob(int $id = 0): bool + { + $jobsSql = "SELECT id FROM job WHERE id = :id AND running != :status"; + $params = [':status' => 0, ':id' => $id]; + + return count($this->dbcon->prepare($jobsSql)->executeQuery($params)->fetchAllAssociative()) > 0; + } + public function addJob(array $values) { if(empty($values['crontype']) ||