diff --git a/Messenger/DoctrineTransactionMiddleware.php b/Messenger/DoctrineTransactionMiddleware.php index e4831557..f5b0ab9a 100644 --- a/Messenger/DoctrineTransactionMiddleware.php +++ b/Messenger/DoctrineTransactionMiddleware.php @@ -34,7 +34,7 @@ protected function handleForManager(EntityManagerInterface $entityManager, Envel return $envelope; } catch (\Throwable $exception) { - $entityManager->getConnection()->rollBack(); + $this->tryRollBackTransaction($entityManager, $exception); if ($exception instanceof HandlerFailedException) { // Remove all HandledStamp from the envelope so the retry will execute all handlers again. @@ -45,4 +45,13 @@ protected function handleForManager(EntityManagerInterface $entityManager, Envel throw $exception; } } + + private function tryRollBackTransaction(EntityManagerInterface $entityManager, \Throwable|\Exception $exception): void + { + try { + $entityManager->getConnection()->rollBack(); + } catch (\Throwable $doctrineException) { + throw new HandlerFailedException($doctrineException->getMessage(), previous: $exception); + } + } }