Skip to content

Commit c61849d

Browse files
committed
[Messenger][FrameworkBundle] Add option to exclude stack trace from ErrorDetailsStamp
1 parent 37138e6 commit c61849d

18 files changed

+167
-3
lines changed

src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ CHANGELOG
99
* Move the Router `cache_dir` to `kernel.build_dir`
1010
* Deprecate the `router.cache_dir` config option
1111
* Add `rate_limiter` tags to rate limiter services
12+
* Add `include_stack_trace_in_error` option that's used in `AddErrorDetailsStampListener`
1213

1314
7.0
1415
---

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1575,6 +1575,9 @@ function ($a) {
15751575
->defaultNull()
15761576
->info('Transport name to send failed messages to (after all retries have failed).')
15771577
->end()
1578+
->booleanNode('include_stack_trace_in_error')
1579+
->info('Whether to include a stack trace in the error details stamp.')
1580+
->end()
15781581
->arrayNode('retry_strategy')
15791582
->addDefaultsIfNotSet()
15801583
->beforeNormalization()
@@ -1606,6 +1609,10 @@ function ($a) {
16061609
->defaultNull()
16071610
->info('Transport name to send failed messages to (after all retries have failed).')
16081611
->end()
1612+
->booleanNode('include_stack_trace_in_error')
1613+
->defaultTrue()
1614+
->info('Whether to include a stack trace in the error details stamp.')
1615+
->end()
16091616
->arrayNode('stop_worker_on_signals')
16101617
->defaultValue([])
16111618
->info('A list of signals that should stop the worker; defaults to SIGTERM and SIGINT.')

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2170,6 +2170,7 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
21702170
}
21712171

21722172
$senderAliases = [];
2173+
$includeStackTraceInError = [];
21732174
$transportRetryReferences = [];
21742175
$transportRateLimiterReferences = [];
21752176
foreach ($config['transports'] as $name => $transport) {
@@ -2186,6 +2187,8 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
21862187
$container->setDefinition($transportId = 'messenger.transport.'.$name, $transportDefinition);
21872188
$senderAliases[$name] = $transportId;
21882189

2190+
$includeStackTraceInError[$name] = $transport['include_stack_trace_in_error'] ?? $config['include_stack_trace_in_error'];
2191+
21892192
if (null !== $transport['retry_strategy']['service']) {
21902193
$transportRetryReferences[$name] = new Reference($transport['retry_strategy']['service']);
21912194
} else {
@@ -2258,6 +2261,10 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
22582261
->replaceArgument(1, $sendersServiceLocator)
22592262
;
22602263

2264+
$container->getDefinition('messenger.failure.add_error_details_stamp_listener')
2265+
->replaceArgument(0, $includeStackTraceInError)
2266+
;
2267+
22612268
$container->getDefinition('messenger.retry.send_failed_message_for_retry_listener')
22622269
->replaceArgument(0, $sendersServiceLocator)
22632270
;

src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,9 @@
180180
->tag('monolog.logger', ['channel' => 'messenger'])
181181

182182
->set('messenger.failure.add_error_details_stamp_listener', AddErrorDetailsStampListener::class)
183+
->args([
184+
abstract_arg('include_stack_trace_in_error'),
185+
])
183186
->tag('kernel.event_subscriber')
184187

185188
->set('messenger.failure.send_failed_message_to_failure_transport_listener', SendFailedMessageToFailureTransportListener::class)

src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,7 @@
564564
<xsd:attribute name="default-bus" type="xsd:string" />
565565
<xsd:attribute name="enabled" type="xsd:boolean" />
566566
<xsd:attribute name="failure-transport" type="xsd:string" />
567+
<xsd:attribute name="include-stack-trace-in-error" type="xsd:boolean" />
567568
</xsd:complexType>
568569

569570
<xsd:complexType name="messenger_serializer">
@@ -600,6 +601,7 @@
600601
<xsd:attribute name="serializer" type="xsd:string" />
601602
<xsd:attribute name="dsn" type="xsd:string" />
602603
<xsd:attribute name="failure-transport" type="xsd:string" />
604+
<xsd:attribute name="include-stack-trace-in-error" type="xsd:boolean" />
603605
<xsd:attribute name="rate-limiter" type="xsd:string" />
604606
</xsd:complexType>
605607

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -724,6 +724,7 @@ class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphor
724724
'default_bus' => null,
725725
'buses' => ['messenger.bus.default' => ['default_middleware' => ['enabled' => true, 'allow_no_handlers' => false, 'allow_no_senders' => true], 'middleware' => []]],
726726
'stop_worker_on_signals' => [],
727+
'include_stack_trace_in_error' => true,
727728
],
728729
'disallow_search_engine_index' => true,
729730
'http_client' => [
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
$container->loadFromExtension('framework', [
4+
'annotations' => false,
5+
'http_method_override' => false,
6+
'handle_all_throwables' => true,
7+
'php_errors' => ['log' => true],
8+
'messenger' => [
9+
'include_stack_trace_in_error' => false,
10+
'transports' => [
11+
'sender.biz' => 'null://',
12+
'sender.bar' => [
13+
'dsn' => 'null://',
14+
'include_stack_trace_in_error' => true,
15+
],
16+
'sender.foo' => 'null://',
17+
],
18+
],
19+
]);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
$container->loadFromExtension('framework', [
4+
'annotations' => false,
5+
'http_method_override' => false,
6+
'handle_all_throwables' => true,
7+
'php_errors' => ['log' => true],
8+
'messenger' => [
9+
'transports' => [
10+
'sender.biz' => 'null://',
11+
'sender.bar' => [
12+
'dsn' => 'null://',
13+
'include_stack_trace_in_error' => false,
14+
],
15+
'sender.foo' => 'null://',
16+
],
17+
],
18+
]);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<container xmlns="http://symfony.com/schema/dic/services"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns:framework="http://symfony.com/schema/dic/symfony"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd
6+
http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
7+
8+
<framework:config http-method-override="false" handle-all-throwables="true">
9+
<framework:annotations enabled="false" />
10+
<framework:php-errors log="true" />
11+
<framework:messenger include-stack-trace-in-error="false">
12+
<framework:transport name="sender.biz" dsn="null://" />
13+
<framework:transport name="sender.bar" dsn="null://" include-stack-trace-in-error="true" />
14+
<framework:transport name="sender.foo" dsn="null://" />
15+
</framework:messenger>
16+
</framework:config>
17+
</container>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<container xmlns="http://symfony.com/schema/dic/services"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns:framework="http://symfony.com/schema/dic/symfony"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd
6+
http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
7+
8+
<framework:config http-method-override="false" handle-all-throwables="true">
9+
<framework:annotations enabled="false" />
10+
<framework:php-errors log="true" />
11+
<framework:messenger>
12+
<framework:transport name="sender.biz" dsn="null://" />
13+
<framework:transport name="sender.bar" dsn="null://" include-stack-trace-in-error="false" />
14+
<framework:transport name="sender.foo" dsn="null://" />
15+
</framework:messenger>
16+
</framework:config>
17+
</container>

0 commit comments

Comments
 (0)