Skip to content

Commit f164370

Browse files
IndraGunawannicolas-grekas
authored andcommitted
[DoctrineBridge] fix messenger bus dispatch inside an active transaction
1 parent 4a176ce commit f164370

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

src/Symfony/Bridge/Doctrine/Messenger/DoctrineOpenTransactionLoggerMiddleware.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,12 @@ protected function handleForManager(EntityManagerInterface $entityManager, Envel
4343
}
4444

4545
$this->isHandling = true;
46+
$initialTransactionLevel = $entityManager->getConnection()->getTransactionNestingLevel();
4647

4748
try {
4849
return $stack->next()->handle($envelope, $stack);
4950
} finally {
50-
if ($entityManager->getConnection()->isTransactionActive()) {
51+
if ($entityManager->getConnection()->getTransactionNestingLevel() > $initialTransactionLevel) {
5152
$this->logger->error('A handler opened a transaction but did not close it.', [
5253
'message' => $envelope->getMessage(),
5354
]);

src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineOpenTransactionLoggerMiddlewareTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ public function log($level, $message, $context = []): void
5050

5151
public function testMiddlewareWrapsInTransactionAndFlushes()
5252
{
53-
$this->connection->expects($this->exactly(1))
54-
->method('isTransactionActive')
55-
->willReturn(true, true, false)
53+
$this->connection->expects($this->exactly(2))
54+
->method('getTransactionNestingLevel')
55+
->willReturn(0, 1)
5656
;
5757

5858
$this->middleware->handle(new Envelope(new \stdClass()), $this->getStackMock());

0 commit comments

Comments
 (0)