From 439dd588bcfbf6af715728f8e81935b8bc4dd82f Mon Sep 17 00:00:00 2001 From: bwaidelich Date: Thu, 28 Jul 2022 16:43:52 +0200 Subject: [PATCH] Wrap Throwables in RuntimeExceptions in Signals in order to keep B/C --- Classes/Job/JobManager.php | 12 ++++++------ README.md | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Classes/Job/JobManager.php b/Classes/Job/JobManager.php index 01c44f3..f77ccbd 100644 --- a/Classes/Job/JobManager.php +++ b/Classes/Job/JobManager.php @@ -134,13 +134,13 @@ public function waitAndExecute(string $queueName, $timeout = null): ?Message if ($message->getNumberOfReleases() < $maximumNumberOfReleases) { $releaseOptions = isset($queueSettings['releaseOptions']) ? $queueSettings['releaseOptions'] : []; $queue->release($message->getIdentifier(), $releaseOptions); - $this->emitMessageReleased($queue, $message, $releaseOptions, $throwable); + $this->emitMessageReleased($queue, $message, $releaseOptions, new \RuntimeException($throwable->getMessage(), 1659019014, $throwable)); $logMessage = $this->throwableStorage->logThrowable($throwable); $this->logger->error($logMessage, LogEnvironment::fromMethodName(__METHOD__)); 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); } else { $queue->abort($message->getIdentifier()); - $this->emitMessageFailed($queue, $message, $throwable); + $this->emitMessageFailed($queue, $message, new \RuntimeException($throwable->getMessage(), 1659019015, $throwable)); $logMessage = $this->throwableStorage->logThrowable($throwable); $this->logger->error($logMessage, LogEnvironment::fromMethodName(__METHOD__)); 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); @@ -253,12 +253,12 @@ protected function emitMessageFinished(QueueInterface $queue, Message $message): * @param QueueInterface $queue The queue the released message belongs to * @param Message $message The message that was released to the queue again * @param array $releaseOptions The options that were passed to the release call - * @param \Throwable|null $jobExecutionThrowable The exception or error (if any) thrown by the job execution + * @param \Exception|null $jobExecutionException The exception (if any) thrown by the job execution * @return void * @Flow\Signal * @api */ - protected function emitMessageReleased(QueueInterface $queue, Message $message, array $releaseOptions, \Throwable $jobExecutionThrowable = null): void + protected function emitMessageReleased(QueueInterface $queue, Message $message, array $releaseOptions, \Exception $jobExecutionException = null): void { } @@ -267,12 +267,12 @@ protected function emitMessageReleased(QueueInterface $queue, Message $message, * * @param QueueInterface $queue The queue the failed message belongs to * @param Message $message The message that could not be executed successfully - * @param \Throwable|null $jobExecutionThrowable The exception or error (if any) thrown by the job execution + * @param \Exception|null $jobExecutionException The exception (if any) thrown by the job execution * @return void * @Flow\Signal * @api */ - protected function emitMessageFailed(QueueInterface $queue, Message $message, \Throwable $jobExecutionThrowable = null): void + protected function emitMessageFailed(QueueInterface $queue, Message $message, \Exception $jobExecutionException = null): void { } diff --git a/README.md b/README.md index e3677fb..524c253 100644 --- a/README.md +++ b/README.md @@ -371,7 +371,7 @@ class Package extends BasePackage $dispatcher->connect( JobManager::class, 'messageFailed', - function(QueueInterface $queue, Message $message, \Throwable $jobExecutionException = null) use ($bootstrap) { + function(QueueInterface $queue, Message $message, \Exception $jobExecutionException = null) use ($bootstrap) { $additionalData = [ 'queue' => $queue->getName(), 'message' => $message->getIdentifier()