Skip to content

Commit 79ce5ba

Browse files
committed
Merge remote-tracking branch 'origin/4.3'
* origin/4.3: deprecate calling createChildContext without the format parameter [EventDispatcher] Fix interface name used in error messages [FrameworkBundle] Add cache configuration for PropertyInfo Update dependencies in the main component Drop useless executable bit [Doctrine][PropertyInfo] Detect if the ID is writeable Add transport in subscriber's phpdoc [Validator] Autovalidation: skip readonly props [DI] default to service id - *not* FQCN - when building tagged locators [Cache] Log a more readable error message when saving into cache fails Update WorkflowEvents.php [Messenger] On failure retry, make message appear received from original sender [Messenger] remove send_and_handle option which can be achieved with SyncTransport Fixing tests - passing pdo is not wrapped for some reason in dbal Changing how RoutableMessageBus fallback bus works [Serializer] Fix BC break: DEPTH_KEY_PATTERN must be public [FrameworkBundle] Fixed issue when a parameter container a '%' Fix the interface incompatibility of EventDispatchers [TwigBundle] fixed Mailer integration in Twig [Form] Add intl/choice_translation_locale option to TimezoneType
2 parents 6e195fd + ffe3644 commit 79ce5ba

File tree

17 files changed

+102
-70
lines changed

17 files changed

+102
-70
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ CHANGELOG
2222
`framework.messenger.default_serializer`, which holds the string service
2323
id and `framework.messenger.symfony_serializer`, which configures the
2424
options if you're using Symfony's serializer.
25+
* [BC Break] Removed the `framework.messenger.routing.send_and_handle` configuration.
26+
Instead of setting it to true, configure a `SyncTransport` and route messages to it.
2527
* Added information about deprecated aliases in `debug:autowiring`
2628
* Added php ini session options `sid_length` and `sid_bits_per_character`
2729
to the `session` section of the configuration

Command/ContainerDebugCommand.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -224,15 +224,12 @@ protected function getContainerBuilder()
224224
if (!$kernel->isDebug() || !(new ConfigCache($kernel->getContainer()->getParameter('debug.container.dump'), true))->isFresh()) {
225225
$buildContainer = \Closure::bind(function () { return $this->buildContainer(); }, $kernel, \get_class($kernel));
226226
$container = $buildContainer();
227+
$container->getCompilerPassConfig()->setRemovingPasses([]);
228+
$container->compile();
227229
} else {
228230
(new XmlFileLoader($container = new ContainerBuilder(), new FileLocator()))->load($kernel->getContainer()->getParameter('debug.container.dump'));
229-
$container->setParameter('container.build_hash', $hash = ContainerBuilder::hash(__METHOD__));
230-
$container->setParameter('container.build_id', hash('crc32', $hash.time()));
231231
}
232232

233-
$container->getCompilerPassConfig()->setRemovingPasses([]);
234-
$container->compile();
235-
236233
return $this->containerBuilder = $container;
237234
}
238235

Console/Descriptor/Descriptor.php

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,21 +322,41 @@ public static function getClassDescription(string $class, string &$resolvedClass
322322

323323
private function getContainerEnvVars(ContainerBuilder $container): array
324324
{
325+
if (!$container->hasParameter('debug.container.dump')) {
326+
return [];
327+
}
328+
329+
if (!is_file($container->getParameter('debug.container.dump'))) {
330+
return [];
331+
}
332+
333+
$file = file_get_contents($container->getParameter('debug.container.dump'));
334+
preg_match_all('{%env\(((?:\w++:)*+\w++)\)%}', $file, $envVars);
335+
$envVars = array_unique($envVars[1]);
336+
337+
$bag = $container->getParameterBag();
338+
$getDefaultParameter = function (string $name) {
339+
return parent::get($name);
340+
};
341+
$getDefaultParameter = $getDefaultParameter->bindTo($bag, \get_class($bag));
342+
325343
$getEnvReflection = new \ReflectionMethod($container, 'getEnv');
326344
$getEnvReflection->setAccessible(true);
345+
327346
$envs = [];
328-
foreach (array_keys($container->getEnvCounters()) as $env) {
347+
348+
foreach ($envVars as $env) {
329349
$processor = 'string';
330350
if (false !== $i = strrpos($name = $env, ':')) {
331351
$name = substr($env, $i + 1);
332352
$processor = substr($env, 0, $i);
333353
}
334-
$defaultValue = ($hasDefault = $container->hasParameter("env($name)")) ? $container->getParameter("env($name)") : null;
354+
$defaultValue = ($hasDefault = $container->hasParameter("env($name)")) ? $getDefaultParameter("env($name)") : null;
335355
if (false === ($runtimeValue = $_ENV[$name] ?? $_SERVER[$name] ?? getenv($name))) {
336356
$runtimeValue = null;
337357
}
338358
$processedValue = ($hasRuntime = null !== $runtimeValue) || $hasDefault ? $getEnvReflection->invoke($container, $env) : null;
339-
$envs[$name.$processor] = [
359+
$envs["$name$processor"] = [
340360
'name' => $name,
341361
'processor' => $processor,
342362
'default_available' => $hasDefault,

DependencyInjection/Configuration.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1125,7 +1125,6 @@ private function addMessengerSection(ArrayNodeDefinition $rootNode)
11251125
if (!\is_int($k)) {
11261126
$newConfig[$k] = [
11271127
'senders' => $v['senders'] ?? (\is_array($v) ? array_values($v) : [$v]),
1128-
'send_and_handle' => $v['send_and_handle'] ?? false,
11291128
];
11301129
} else {
11311130
$newConfig[$v['message-class']]['senders'] = array_map(
@@ -1134,7 +1133,6 @@ function ($a) {
11341133
},
11351134
array_values($v['sender'])
11361135
);
1137-
$newConfig[$v['message-class']]['send-and-handle'] = $v['send-and-handle'] ?? false;
11381136
}
11391137
}
11401138

@@ -1147,7 +1145,6 @@ function ($a) {
11471145
->requiresAtLeastOneElement()
11481146
->prototype('scalar')->end()
11491147
->end()
1150-
->booleanNode('send_and_handle')->defaultFalse()->end()
11511148
->end()
11521149
->end()
11531150
->end()

DependencyInjection/FrameworkExtension.php

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@
9999
use Symfony\Component\Serializer\Encoder\DecoderInterface;
100100
use Symfony\Component\Serializer\Encoder\EncoderInterface;
101101
use Symfony\Component\Serializer\Mapping\ClassDiscriminatorFromClassMetadata;
102-
use Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory;
103102
use Symfony\Component\Serializer\Normalizer\ConstraintViolationListNormalizer;
104103
use Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer;
105104
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
@@ -1505,18 +1504,8 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
15051504
$chainLoader->replaceArgument(0, $serializerLoaders);
15061505
$container->getDefinition('serializer.mapping.cache_warmer')->replaceArgument(0, $serializerLoaders);
15071506

1508-
if (!$container->getParameter('kernel.debug')) {
1509-
$cacheMetadataFactory = new Definition(
1510-
CacheClassMetadataFactory::class,
1511-
[
1512-
new Reference('serializer.mapping.cache_class_metadata_factory.inner'),
1513-
new Reference('serializer.mapping.cache.symfony'),
1514-
]
1515-
);
1516-
$cacheMetadataFactory->setPublic(false);
1517-
$cacheMetadataFactory->setDecoratedService('serializer.mapping.class_metadata_factory');
1518-
1519-
$container->setDefinition('serializer.mapping.cache_class_metadata_factory', $cacheMetadataFactory);
1507+
if ($container->getParameter('kernel.debug')) {
1508+
$container->removeDefinition('serializer.mapping.cache_class_metadata_factory');
15201509
}
15211510

15221511
if (isset($config['name_converter']) && $config['name_converter']) {
@@ -1551,6 +1540,10 @@ private function registerPropertyInfoConfiguration(ContainerBuilder $container,
15511540
$definition->addTag('property_info.description_extractor', ['priority' => -1000]);
15521541
$definition->addTag('property_info.type_extractor', ['priority' => -1001]);
15531542
}
1543+
1544+
if ($container->getParameter('kernel.debug')) {
1545+
$container->removeDefinition('property_info.cache');
1546+
}
15541547
}
15551548

15561549
private function registerLockConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
@@ -1659,6 +1652,7 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
16591652
'before' => [
16601653
['id' => 'add_bus_name_stamp_middleware'],
16611654
['id' => 'dispatch_after_current_bus'],
1655+
['id' => 'failed_message_processing_middleware'],
16621656
],
16631657
'after' => [
16641658
['id' => 'send_message'],
@@ -1744,7 +1738,6 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
17441738
}
17451739

17461740
$messageToSendersMapping = [];
1747-
$messagesToSendAndHandle = [];
17481741
foreach ($config['routing'] as $message => $messageConfiguration) {
17491742
if ('*' !== $message && !class_exists($message) && !interface_exists($message, false)) {
17501743
throw new LogicException(sprintf('Invalid Messenger routing configuration: class or interface "%s" not found.', $message));
@@ -1758,7 +1751,6 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
17581751
}
17591752

17601753
$messageToSendersMapping[$message] = $messageConfiguration['senders'];
1761-
$messagesToSendAndHandle[$message] = $messageConfiguration['send_and_handle'];
17621754
}
17631755

17641756
$senderReferences = [];
@@ -1769,7 +1761,6 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
17691761
$container->getDefinition('messenger.senders_locator')
17701762
->replaceArgument(0, $messageToSendersMapping)
17711763
->replaceArgument(1, ServiceLocatorTagPass::register($container, $senderReferences))
1772-
->replaceArgument(2, $messagesToSendAndHandle)
17731764
;
17741765

17751766
$container->getDefinition('messenger.retry_strategy_locator')

Resources/config/cache.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@
3636
<tag name="cache.pool" />
3737
</service>
3838

39+
<service id="cache.property_info" parent="cache.system" public="false">
40+
<tag name="cache.pool" />
41+
</service>
42+
3943
<service id="cache.messenger.restart_workers_signal" parent="cache.app" public="false">
4044
<tag name="cache.pool" />
4145
</service>

Resources/config/messenger.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
<service id="messenger.senders_locator" class="Symfony\Component\Messenger\Transport\Sender\SendersLocator">
1212
<argument type="collection" /> <!-- Per message senders map -->
1313
<argument /> <!-- senders locator -->
14-
<argument type="collection" /> <!-- Messages to send and handle -->
1514
</service>
1615
<service id="messenger.middleware.send_message" class="Symfony\Component\Messenger\Middleware\SendMessageMiddleware">
1716
<tag name="monolog.logger" channel="messenger" />
@@ -48,6 +47,8 @@
4847
<argument type="service" id="validator" />
4948
</service>
5049

50+
<service id="messenger.middleware.failed_message_processing_middleware" class="Symfony\Component\Messenger\Middleware\FailedMessageProcessingMiddleware" />
51+
5152
<service id="messenger.middleware.traceable" class="Symfony\Component\Messenger\Middleware\TraceableMiddleware" abstract="true">
5253
<argument type="service" id="debug.stopwatch" />
5354
</service>
@@ -106,6 +107,7 @@
106107
<!-- routable message bus -->
107108
<service id="messenger.routable_message_bus" class="Symfony\Component\Messenger\RoutableMessageBus">
108109
<argument /> <!-- Message bus locator -->
110+
<argument type="service" id="messenger.default_bus" />
109111
</service>
110112
</services>
111113
</container>

Resources/config/property_info.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@
2121
<service id="Symfony\Component\PropertyInfo\PropertyListExtractorInterface" alias="property_info" />
2222
<service id="Symfony\Component\PropertyInfo\PropertyInitializableExtractorInterface" alias="property_info" />
2323

24+
<service id="property_info.cache" decorates="property_info" class="Symfony\Component\PropertyInfo\PropertyInfoCacheExtractor">
25+
<argument type="service" id="property_info.cache.inner" />
26+
<argument type="service" id="cache.property_info" />
27+
</service>
28+
2429
<!-- Extractor -->
2530
<service id="property_info.reflection_extractor" class="Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor">
2631
<tag name="property_info.list_extractor" priority="-1000" />

Resources/config/schema/symfony-1.0.xsd

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,6 @@
434434
<xsd:element name="sender" type="messenger_routing_sender" />
435435
</xsd:choice>
436436
<xsd:attribute name="message-class" type="xsd:string" use="required"/>
437-
<xsd:attribute name="send-and-handle" type="xsd:boolean" default="false"/>
438437
</xsd:complexType>
439438

440439
<xsd:complexType name="messenger_routing_sender">

Resources/config/serializer.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,11 @@
104104
<argument type="service" id="cache.serializer" />
105105
</service>
106106

107+
<service id="serializer.mapping.cache_class_metadata_factory" decorates="serializer.mapping.class_metadata_factory" class="Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory">
108+
<argument type="service" id="serializer.mapping.cache_class_metadata_factory.inner" />
109+
<argument type="service" id="serializer.mapping.cache.symfony" />
110+
</service>
111+
107112
<!-- Encoders -->
108113
<service id="serializer.encoder.xml" class="Symfony\Component\Serializer\Encoder\XmlEncoder">
109114
<tag name="serializer.encoder" />

0 commit comments

Comments
 (0)