mirror of https://github.com/MISP/MISP
chg: [bg] Move logging to one place
parent
5cb4aa9697
commit
ac59e1ee54
|
@ -62,21 +62,38 @@ class StartWorkerShell extends AppShell
|
|||
$this->checkMaxExecutionTime();
|
||||
|
||||
$job = $this->BackgroundJobsTool->dequeue($this->worker->queue());
|
||||
|
||||
if ($job) {
|
||||
CakeLog::info("[WORKER PID: {$this->worker->pid()}][{$this->worker->queue()}] - launching job with ID: {$job->id()}...");
|
||||
|
||||
try {
|
||||
$this->BackgroundJobsTool->run($job);
|
||||
} catch (Exception $exception) {
|
||||
CakeLog::error("[WORKER PID: {$this->worker->pid()}][{$this->worker->queue()}] - job ID: {$job->id()} failed with exception: {$exception->getMessage()}");
|
||||
$job->setStatus(BackgroundJob::STATUS_FAILED);
|
||||
$this->BackgroundJobsTool->update($job);
|
||||
}
|
||||
$this->runJob($job);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param BackgroundJob $job
|
||||
*/
|
||||
private function runJob(BackgroundJob $job)
|
||||
{
|
||||
CakeLog::info("[WORKER PID: {$this->worker->pid()}][{$this->worker->queue()}] - launching job with ID: {$job->id()}...");
|
||||
|
||||
try {
|
||||
$job->setStatus(BackgroundJob::STATUS_RUNNING);
|
||||
CakeLog::info("[JOB ID: {$job->id()}] - started.");
|
||||
$this->BackgroundJobsTool->update($job);
|
||||
|
||||
$job->run();
|
||||
|
||||
if ($job->status() === BackgroundJob::STATUS_COMPLETED) {
|
||||
CakeLog::info("[JOB ID: {$job->id()}] - completed.");
|
||||
} else {
|
||||
CakeLog::error("[JOB ID: {$job->id()}] - failed with error code {$job->returnCode()}. STDERR: {$job->error()}. STDOUT: {$job->output()}.");
|
||||
}
|
||||
} catch (Exception $exception) {
|
||||
CakeLog::error("[WORKER PID: {$this->worker->pid()}][{$this->worker->queue()}] - job ID: {$job->id()} failed with exception: {$exception->getMessage()}");
|
||||
$job->setStatus(BackgroundJob::STATUS_FAILED);
|
||||
}
|
||||
$this->BackgroundJobsTool->update($job);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if worker maximum execution time is reached, and exits if so.
|
||||
*
|
||||
|
|
|
@ -66,10 +66,8 @@ class BackgroundJob implements JsonSerializable
|
|||
|
||||
/**
|
||||
* Run the job command
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function run(): self
|
||||
public function run(): void
|
||||
{
|
||||
$descriptorSpec = [
|
||||
1 => ["pipe", "w"], // stdout
|
||||
|
@ -90,28 +88,17 @@ class BackgroundJob implements JsonSerializable
|
|||
['BACKGROUND_JOB_ID' => $this->id]
|
||||
);
|
||||
|
||||
$stdout = stream_get_contents($pipes[1]);
|
||||
$this->setOutput($stdout);
|
||||
fclose($pipes[1]);
|
||||
|
||||
$stderr = stream_get_contents($pipes[2]);
|
||||
$this->setError($stderr);
|
||||
fclose($pipes[2]);
|
||||
$this->output = stream_get_contents($pipes[1]);
|
||||
$this->error = stream_get_contents($pipes[2]);
|
||||
|
||||
$this->returnCode = proc_close($process);
|
||||
|
||||
if ($this->returnCode === 0 && empty($stderr)) {
|
||||
$this->setStatus(BackgroundJob::STATUS_COMPLETED);
|
||||
$this->setProgress(100);
|
||||
|
||||
CakeLog::info("[JOB ID: {$this->id()}] - completed.");
|
||||
} else {
|
||||
$this->setStatus(BackgroundJob::STATUS_FAILED);
|
||||
|
||||
CakeLog::error("[JOB ID: {$this->id()}] - failed with error code {$this->returnCode}. STDERR: {$stderr}. STDOUT: {$stdout}.");
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function jsonSerialize(): array
|
||||
|
|
|
@ -337,27 +337,6 @@ class BackgroundJobsTool
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run job
|
||||
*
|
||||
* @param BackgroundJob $job
|
||||
*
|
||||
* @return integer Process return code.
|
||||
*/
|
||||
public function run(BackgroundJob $job): int
|
||||
{
|
||||
$job->setStatus(BackgroundJob::STATUS_RUNNING);
|
||||
CakeLog::info("[JOB ID: {$job->id()}] - started.");
|
||||
|
||||
$this->update($job);
|
||||
|
||||
$job = $job->run();
|
||||
|
||||
$this->update($job);
|
||||
|
||||
return $job->returnCode();
|
||||
}
|
||||
|
||||
/**
|
||||
* Start worker by name
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue