Skip to content

Commit 4fc0e80

Browse files
committed
Rename exception, add change log and a few other things
1 parent 91205f7 commit 4fc0e80

8 files changed

+60
-73
lines changed

src/Symfony/Component/Messenger/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ CHANGELOG
7171
only. Pass the `auto_setup` connection option to control this.
7272
* Added a `SetupTransportsCommand` command to setup the transports
7373
* Added a Doctrine transport. For example, use the `doctrine://default` DSN (this uses the `default` Doctrine entity manager)
74+
* [BC BREAK] A `HandlerFailedException` exception will be thrown if one or more handler fails.
7475

7576
4.2.0
7677
-----

src/Symfony/Component/Messenger/Exception/ChainedHandlerFailedException.php

-61
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\Messenger\Exception;
13+
14+
use Symfony\Component\Messenger\Envelope;
15+
16+
class HandlerFailedException extends RuntimeException
17+
{
18+
private $exceptions;
19+
private $envelope;
20+
21+
public function __construct(Envelope $envelope, \Throwable ...$exceptions)
22+
{
23+
$firstFailure = current($exceptions);
24+
25+
parent::__construct(
26+
1 === \count($exceptions)
27+
? $firstFailure->getMessage()
28+
: sprintf('%d handlers failed. First failure is: "%s"', \count($exceptions), $firstFailure->getMessage()),
29+
$firstFailure->getCode(),
30+
$firstFailure
31+
);
32+
33+
$this->envelope = $envelope;
34+
$this->exceptions = $exceptions;
35+
}
36+
37+
public function getEnvelope(): Envelope
38+
{
39+
return $this->envelope;
40+
}
41+
42+
/**
43+
* @return \Throwable[]
44+
*/
45+
public function getNestedExceptions(): array
46+
{
47+
return $this->exceptions;
48+
}
49+
}

src/Symfony/Component/Messenger/Middleware/HandleMessageMiddleware.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
use Psr\Log\LoggerAwareTrait;
1515
use Psr\Log\NullLogger;
1616
use Symfony\Component\Messenger\Envelope;
17-
use Symfony\Component\Messenger\Exception\ChainedHandlerFailedException;
17+
use Symfony\Component\Messenger\Exception\HandlerFailedException;
1818
use Symfony\Component\Messenger\Exception\NoHandlerForMessageException;
1919
use Symfony\Component\Messenger\Handler\HandlersLocatorInterface;
2020
use Symfony\Component\Messenger\Stamp\HandledStamp;
@@ -79,7 +79,7 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope
7979
}
8080

8181
if (\count($exceptions)) {
82-
throw new ChainedHandlerFailedException($envelope, ...$exceptions);
82+
throw new HandlerFailedException($envelope, ...$exceptions);
8383
}
8484

8585
return $stack->next()->handle($envelope, $stack);

src/Symfony/Component/Messenger/Tests/Fixtures/MessageHandlerFailingFirstTimes.php renamed to src/Symfony/Component/Messenger/Tests/Fixtures/DummyMessageHandlerFailingFirstTimes.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
namespace Symfony\Component\Messenger\Tests\Fixtures;
1313

14-
class MessageHandlerFailingFirstTimes
14+
class DummyMessageHandlerFailingFirstTimes
1515
{
1616
private $remainingFailures;
1717

src/Symfony/Component/Messenger/Tests/Middleware/HandleMessageMiddlewareTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
namespace Symfony\Component\Messenger\Tests\Middleware;
1313

1414
use Symfony\Component\Messenger\Envelope;
15-
use Symfony\Component\Messenger\Exception\ChainedHandlerFailedException;
15+
use Symfony\Component\Messenger\Exception\HandlerFailedException;
1616
use Symfony\Component\Messenger\Handler\HandlersLocator;
1717
use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware;
1818
use Symfony\Component\Messenger\Middleware\StackMiddleware;
@@ -52,7 +52,7 @@ public function testItAddsHandledStamps(array $handlers, array $expectedStamps,
5252

5353
try {
5454
$envelope = $middleware->handle($envelope, $this->getStackMock($nextIsCalled));
55-
} catch (ChainedHandlerFailedException $e) {
55+
} catch (HandlerFailedException $e) {
5656
$envelope = $e->getEnvelope();
5757
}
5858

src/Symfony/Component/Messenger/Tests/RetryIntegrationTest.php

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
<?php
22

3-
declare(strict_types=1);
4-
53
/*
64
* This file is part of the Symfony package.
75
*
@@ -22,7 +20,7 @@
2220
use Symfony\Component\Messenger\Retry\MultiplierRetryStrategy;
2321
use Symfony\Component\Messenger\Stamp\SentStamp;
2422
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
25-
use Symfony\Component\Messenger\Tests\Fixtures\MessageHandlerFailingFirstTimes;
23+
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessageHandlerFailingFirstTimes;
2624
use Symfony\Component\Messenger\Transport\Receiver\ReceiverInterface;
2725
use Symfony\Component\Messenger\Transport\Sender\SendersLocator;
2826
use Symfony\Component\Messenger\Worker;
@@ -43,8 +41,8 @@ public function testRetryMechanism()
4341

4442
$senderLocator = new SendersLocator([], ['*' => true]);
4543

46-
$handler = new MessageHandlerFailingFirstTimes();
47-
$throwingHandler = new MessageHandlerFailingFirstTimes(1);
44+
$handler = new DummyMessageHandlerFailingFirstTimes();
45+
$throwingHandler = new DummyMessageHandlerFailingFirstTimes(1);
4846
$handlerLocator = new HandlersLocator([
4947
DummyMessage::class => [
5048
'handler' => $handler,

src/Symfony/Component/Messenger/Worker.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
use Symfony\Component\Messenger\Event\WorkerMessageFailedEvent;
1616
use Symfony\Component\Messenger\Event\WorkerMessageHandledEvent;
1717
use Symfony\Component\Messenger\Event\WorkerMessageReceivedEvent;
18-
use Symfony\Component\Messenger\Exception\ChainedHandlerFailedException;
18+
use Symfony\Component\Messenger\Exception\HandlerFailedException;
1919
use Symfony\Component\Messenger\Exception\LogicException;
2020
use Symfony\Component\Messenger\Exception\UnrecoverableMessageHandlingException;
2121
use Symfony\Component\Messenger\Retry\RetryStrategyInterface;
@@ -124,7 +124,7 @@ private function handleMessage(Envelope $envelope, ReceiverInterface $receiver,
124124
try {
125125
$envelope = $this->bus->dispatch($envelope->with(new ReceivedStamp()));
126126
} catch (\Throwable $throwable) {
127-
if ($throwable instanceof ChainedHandlerFailedException) {
127+
if ($throwable instanceof HandlerFailedException) {
128128
$envelope = $throwable->getEnvelope();
129129
}
130130

0 commit comments

Comments
 (0)