Skip to content

Commit 87b5738

Browse files
kdambekalnsbwaidelich
authored andcommitted
BUGFIX: When working on job, catch Throwable
When working on a job, any `\Exception` is caught and the job in the queue is released (retry or failure). In case of a `\Throwable` _not_ being an `\Exception`, this does not happen and the job is never "un- reserved". This change catches `\Throwable` instead to fix this.
1 parent 7dd6a6a commit 87b5738

1 file changed

Lines changed: 7 additions & 7 deletions

File tree

Classes/Job/JobManager.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -127,23 +127,23 @@ public function waitAndExecute(string $queueName, $timeout = null): ?Message
127127
} else {
128128
$this->executeJobForMessage($queue, $message);
129129
}
130-
} catch (\Exception $exception) {
130+
} catch (\Throwable $throwable) {
131131
$maximumNumberOfReleases = isset($queueSettings['maximumNumberOfReleases']) ?
132132
(int)$queueSettings['maximumNumberOfReleases'] :
133133
self::DEFAULT_MAXIMUM_NUMBER_RELEASES;
134134
if ($message->getNumberOfReleases() < $maximumNumberOfReleases) {
135135
$releaseOptions = isset($queueSettings['releaseOptions']) ? $queueSettings['releaseOptions'] : [];
136136
$queue->release($message->getIdentifier(), $releaseOptions);
137-
$this->emitMessageReleased($queue, $message, $releaseOptions, $exception);
138-
$logMessage = $this->throwableStorage->logThrowable($exception);
137+
$this->emitMessageReleased($queue, $message, $releaseOptions, $throwable);
138+
$logMessage = $this->throwableStorage->logThrowable($throwable);
139139
$this->logger->error($logMessage, LogEnvironment::fromMethodName(__METHOD__));
140-
throw new JobQueueException(sprintf('Job execution for job (message: "%s", queue: "%s") failed (%d/%d trials) - RELEASE', $message->getIdentifier(), $queue->getName(), $message->getNumberOfReleases() + 1, $maximumNumberOfReleases + 1), 1334056583, $exception);
140+
throw new JobQueueException(sprintf('Job execution for job (message: "%s", queue: "%s") failed (%d/%d trials) - RELEASE', $message->getIdentifier(), $queue->getName(), $message->getNumberOfReleases() + 1, $maximumNumberOfReleases + 1), 1334056583, $throwable);
141141
} else {
142142
$queue->abort($message->getIdentifier());
143-
$this->emitMessageFailed($queue, $message, $exception);
144-
$logMessage = $this->throwableStorage->logThrowable($exception);
143+
$this->emitMessageFailed($queue, $message, $throwable);
144+
$logMessage = $this->throwableStorage->logThrowable($throwable);
145145
$this->logger->error($logMessage, LogEnvironment::fromMethodName(__METHOD__));
146-
throw new JobQueueException(sprintf('Job execution for job (message: "%s", queue: "%s") failed (%d/%d trials) - ABORTING', $message->getIdentifier(), $queue->getName(), $message->getNumberOfReleases() + 1, $maximumNumberOfReleases + 1), 1334056584, $exception);
146+
throw new JobQueueException(sprintf('Job execution for job (message: "%s", queue: "%s") failed (%d/%d trials) - ABORTING', $message->getIdentifier(), $queue->getName(), $message->getNumberOfReleases() + 1, $maximumNumberOfReleases + 1), 1334056584, $throwable);
147147
}
148148
} finally {
149149
if ($messageCacheIdentifier !== null) {

0 commit comments

Comments
 (0)