dualmedia / doctrine-retry-bundle
Bundle for easy access to retryable doctrine transactions
Installs: 8
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 1
Type:symfony-bundle
Requires
- php: ^8.3
- doctrine/orm: ^2 || ^3
- symfony/framework-bundle: ^6.4 || ^7.3
Requires (Dev)
This package is auto-updated.
Last update: 2025-09-16 08:02:00 UTC
README
Doctrine Retry Bundle
A Symfony Bundle for easy retryable database transactions.
Install
Simply composer require dualmedia/doctrine-retry-bundle
Then add the bundle to your config/bundles.php
file like so
return [ Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], // other bundles ... DualMedia\DoctrineRetryBundle\DoctrineRetryBundle::class => ['all' => true], ];
Setup
You're free to leave the configuration as-is, otherwise all you can change is the following:
dm_doctrine_retry: track_nesting: '%kernel.debug%' # if true, Retrier will warn you if you nest transaction calls
Usage
use DualMedia\DoctrineRetryBundle\Retrier; use Doctrine\ORM\EntityManagerInterface; class Foo { public function __construct( private readonly Retrier $retrier ) {} public function doWork( int $orderId ): void { $this->retrier->execute(function (EntityManagerInterface $em) use ($orderId): void { // do some work which may cause deadlocks and such $order = $em->getRepository(SomeOrder::class)->find($orderId, \Doctrine\DBAL\LockMode::PESSIMISTIC_WRITE); }); } }