Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit61a5a06

Browse files
committed
[Messenger] add handler description as array key toHandlerFailedException::getNestedExceptions()
1 parent7d310a3 commit61a5a06

File tree

4 files changed

+38
-4
lines changed

4 files changed

+38
-4
lines changed

‎src/Symfony/Component/Messenger/CHANGELOG.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ CHANGELOG
77
* Deprecate`StopWorkerOnSignalsListener` in favor of using the`SignalableCommandInterface`
88
* Add`HandlerDescriptor::getOptions`
99
* Add support for multiple Redis Sentinel hosts
10+
* Add handler description as array key to`HandlerFailedException::getNestedExceptions()`
1011

1112
6.3
1213
---

‎src/Symfony/Component/Messenger/Exception/HandlerFailedException.php‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class HandlerFailedException extends RuntimeException
1919
privateEnvelope$envelope;
2020

2121
/**
22-
* @param \Throwable[] $exceptions
22+
* @paramarray<string,\Throwable> $exceptions The name of the handler should be given as key
2323
*/
2424
publicfunction__construct(Envelope$envelope,array$exceptions)
2525
{
@@ -46,7 +46,7 @@ public function getEnvelope(): Envelope
4646
}
4747

4848
/**
49-
* @return \Throwable[]
49+
* @returnarray<string,\Throwable> The name of the handler should be given as key
5050
*/
5151
publicfunctiongetNestedExceptions():array
5252
{

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope
9595
$envelope =$envelope->with($handledStamp);
9696
$this->logger?->info('Message {class} handled by {handler}',$context + ['handler' =>$handledStamp->getHandlerName()]);
9797
}catch (\Throwable$e) {
98-
$exceptions[] =$e;
98+
$exceptions[$handlerDescriptor->getName()] =$e;
9999
}
100100
}
101101

@@ -107,7 +107,7 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope
107107
$handler =$stamp->getHandlerDescriptor()->getBatchHandler();
108108
$handler->flush($flushStamp->force());
109109
}catch (\Throwable$e) {
110-
$exceptions[] =$e;
110+
$exceptions[$stamp->getHandlerDescriptor()->getName()] =$e;
111111
}
112112
}
113113
}

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,31 @@ public function testItCallsTheHandlerAndNextMiddleware()
4747
$middleware->handle($envelope,$this->getStackMock());
4848
}
4949

50+
publicfunctiontestItKeysTheHandlerFailedNestedExceptionsByHandlerDescription()
51+
{
52+
$message =newDummyMessage('Hey');
53+
$envelope =newEnvelope($message);
54+
$handler =newFailingHandleMessageMiddlewareTestCallable();
55+
56+
$middleware =newHandleMessageMiddleware(newHandlersLocator([
57+
DummyMessage::class => [$handler],
58+
]));
59+
60+
try {
61+
$middleware->handle($envelope,$this->getStackMock(false));
62+
}catch (HandlerFailedException$e) {
63+
$key = (newHandlerDescriptor($handler))->getName();
64+
65+
$this->assertCount(1,$e->getNestedExceptions());
66+
$this->assertArrayHasKey($key,$e->getNestedExceptions());
67+
$this->assertSame('failed',$e->getNestedExceptions()[$key]->getMessage());
68+
69+
return;
70+
}
71+
72+
$this->fail('Exception not thrown.');
73+
}
74+
5075
/**
5176
* @dataProvider itAddsHandledStampsProvider
5277
*/
@@ -335,6 +360,14 @@ public function __invoke()
335360
}
336361
}
337362

363+
class FailingHandleMessageMiddlewareTestCallable
364+
{
365+
publicfunction__invoke()
366+
{
367+
thrownew \Exception('failed');
368+
}
369+
}
370+
338371
class HandleMessageMiddlewareNamedArgumentTestCallable
339372
{
340373
publicfunction__invoke(object$message,$namedArgument)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp