|
15 | 15 | use Neos\Cache\Frontend\VariableFrontend; |
16 | 16 | use Neos\Flow\Annotations as Flow; |
17 | 17 | use Neos\Flow\Core\Booting\Scripts; |
| 18 | +use Neos\Flow\Log\ThrowableStorageInterface; |
| 19 | +use Neos\Flow\Log\Utility\LogEnvironment; |
18 | 20 | use Neos\Flow\Property\PropertyMapper; |
19 | 21 | use Flowpack\JobQueue\Common\Exception as JobQueueException; |
20 | 22 | use Flowpack\JobQueue\Common\Queue\Message; |
21 | 23 | use Flowpack\JobQueue\Common\Queue\QueueManager; |
| 24 | +use Psr\Log\LoggerInterface; |
22 | 25 |
|
23 | 26 | /** |
24 | 27 | * Job manager |
@@ -62,6 +65,18 @@ class JobManager |
62 | 65 | */ |
63 | 66 | protected $flowSettings; |
64 | 67 |
|
| 68 | + /** |
| 69 | + * @Flow\Inject |
| 70 | + * @var ThrowableStorageInterface |
| 71 | + */ |
| 72 | + protected $throwableStorage; |
| 73 | + |
| 74 | + /** |
| 75 | + * @Flow\Inject |
| 76 | + * @var LoggerInterface |
| 77 | + */ |
| 78 | + protected $logger; |
| 79 | + |
65 | 80 | /** |
66 | 81 | * Put a job in the queue |
67 | 82 | * |
@@ -120,10 +135,14 @@ public function waitAndExecute(string $queueName, $timeout = null): ?Message |
120 | 135 | $releaseOptions = isset($queueSettings['releaseOptions']) ? $queueSettings['releaseOptions'] : []; |
121 | 136 | $queue->release($message->getIdentifier(), $releaseOptions); |
122 | 137 | $this->emitMessageReleased($queue, $message, $releaseOptions, $exception); |
| 138 | + $logMessage = $this->throwableStorage->logThrowable($exception); |
| 139 | + $this->logger->error($logMessage, LogEnvironment::fromMethodName(__METHOD__)); |
123 | 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); |
124 | 141 | } else { |
125 | 142 | $queue->abort($message->getIdentifier()); |
126 | 143 | $this->emitMessageFailed($queue, $message, $exception); |
| 144 | + $logMessage = $this->throwableStorage->logThrowable($exception); |
| 145 | + $this->logger->error($logMessage, LogEnvironment::fromMethodName(__METHOD__)); |
127 | 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); |
128 | 147 | } |
129 | 148 | } finally { |
|
0 commit comments