8000 [FrameworkBundle][Lock] Fix certain DSNs identified as service IDs · symfony/symfony@6ee5491 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6ee5491

Browse files
committed
[FrameworkBundle][Lock] Fix certain DSNs identified as service IDs
1 parent 06d1b76 commit 6ee5491

File tree

16 files changed

+177
-67
lines changed

16 files changed

+177
-67
lines changed

UPGRADE-7.2.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ Ldap
4747

4848
* Add methods for `saslBind()` and `whoami()` to `ConnectionInterface` and `LdapInterface`
4949

50+
Lock
51+
----
52+
53+
* Deprecate the lock DSNs `flock`, `semaphore` and `in-memory` in favor of `flock:`, `semaphore:` and `in-memory:`
54+
5055
Mailer
5156
------
5257

src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ CHANGELOG
1616
* Register `Symfony\Component\Serializer\NameConverter\SnakeCaseToCamelCaseNameConverter` as a service named `serializer.name_converter.snake_case_to_camel_case` if available
1717
* Deprecate `session.sid_length` and `session.sid_bits_per_character` config options
1818
* Add the ability to use an existing service as a lock/semaphore resource
19+
* Deprecate the lock DSNs `flock`, `semaphore` and `in-memory` in favor of `flock:`, `semaphore:` and `in-memory:`
1920
* Add support for configuring multiple serializer instances via the configuration
2021
* Add support for `SYMFONY_TRUSTED_PROXIES`, `SYMFONY_TRUSTED_HEADERS`, `SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER` and `SYMFONY_TRUSTED_HOSTS` env vars
2122

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1416,7 +1416,7 @@ private function addLockSection(ArrayNodeDefinition $rootNode, callable $enableI
14161416
->arrayNode('resources')
14171417
->normalizeKeys(false)
14181418
->useAttributeAsKey('name')
1419-
->defaultValue(['default' => [class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphore' : 'flock']])
1419+
->defaultValue(['default' => [class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphore:' : 'flock:']])
14201420
->beforeNormalization()
14211421
->ifString()->then(fn ($v) => ['default' => $v])
14221422
->end()

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2008,7 +2008,12 @@ private function registerLockConfiguration(array $config, ContainerBuilder $cont
20082008
$storeDefinitions = [];
20092009
foreach ($resourceStores as $resourceStore) {
20102010
$storeDsn = $container->resolveEnvPlaceholders($resourceStore, null, $usedEnvs);
2011-
if (!$usedEnvs && !str_contains($resourceStore, '://')) {
2011+
if (\in_array($resourceStore, ['flock', 'semaphore', 'in-memory'], true)) {
2012+
$resourceStore .= ':';
2013+
2014+
trigger_deprecation('symfony/framework-bundle', '7.2', 'Support for lock DSNs that don\'t end with a colon is deprecated. Use "%s" instead.', $resourceStore);
2015+
}
2016+
if (!$usedEnvs && !str_contains($resourceStore, ':')) {
20122017
$resourceStore = new Reference($resourceStore);
20132018
}
20142019
$storeDefinition = new Definition(PersistingStoreInterface::class);

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

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -291,47 +291,47 @@ public function testValidLockConfiguration($lockConfig, $processedConfig)
291291

292292
public static function provideValidLockConfigurationTests(): iterable
293293
{
294-
yield [null, ['enabled' => true, 'resources' => ['default' => [class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphore' : 'flock']]]];
295-
296-
yield ['flock', ['enabled' => true, 'resources' => ['default' => ['flock']]]];
297-
yield [['flock', 'semaphore'], ['enabled' => true, 'resources' => ['default' => ['flock', 'semaphore']]]];
298-
yield [['foo' => 'flock', 'bar' => 'semaphore'], ['enabled' => true, 'resources' => ['foo' => ['flock'], 'bar' => ['semaphore']]]];
299-
yield [['foo' => ['flock', 'semaphore'], 'bar' => 'semaphore'], ['enabled' => true, 'resources' => ['foo' => ['flock', 'semaphore'], 'bar' => ['semaphore']]]];
300-
yield [['default' => 'flock'], ['enabled' => true, 'resources' => ['default' => ['flock']]]];
301-
302-
yield [['enabled' => false, 'flock'], ['enabled' => false, 'resources' => ['default' => ['flock']]]];
303-
yield [['enabled' => false, ['flock', 'semaphore']], ['enabled' => false, 'resources' => ['default' => ['flock', 'semaphore']]]];
304-
yield [['enabled' => false, 'foo' => 'flock', 'bar' => 'semaphore'], ['enabled' => false, 'resources' => ['foo' => ['flock'], 'bar' => ['semaphore']]]];
305-
yield [['enabled' => false, 'foo' => ['flock', 'semaphore']], ['enabled' => false, 'resources' => ['foo' => ['flock', 'semaphore']]]];
306-
yield [['enabled' => false, 'default' => 'flock'], ['enabled' => false, 'resources' => ['default' => ['flock']]]];
307-
308-
yield [['resources' => 'flock'], ['enabled' => true, 'resources' => ['default' => ['flock']]]];
309-
yield [['resources' => ['flock', 'semaphore']], ['enabled' => true, 'resources' => ['default' => ['flock', 'semaphore']]]];
310-
yield [['resources' => ['foo' => 'flock', 'bar' => 'semaphore']], ['enabled' => true, 'resources' => ['foo' => ['flock'], 'bar' => ['semaphore']]]];
311-
yield [['resources' => ['foo' => ['flock', 'semaphore'], 'bar' => 'semaphore']], ['enabled' => true, 'resources' => ['foo' => ['flock', 'semaphore'], 'bar' => ['semaphore']]]];
312-
yield [['resources' => ['default' => 'flock']], ['enabled' => true, 'resources' => ['default' => ['flock']]]];
313-
314-
yield [['enabled' => false, 'resources' => 'flock'], ['enabled' => false, 'resources' => ['default' => ['flock']]]];
315-
yield [['enabled' => false, 'resources' => ['flock', 'semaphore']], ['enabled' => false, 'resources' => ['default' => ['flock', 'semaphore']]]];
316-
yield [['enabled' => false, 'resources' => ['foo' => 'flock', 'bar' => 'semaphore']], ['enabled' => false, 'resources' => ['foo' => ['flock'], 'bar' => ['semaphore']]]];
317-
yield [['enabled' => false, 'resources' => ['foo' => ['flock', 'semaphore'], 'bar' => 'semaphore']], ['enabled' => false, 'resources' => ['foo' => ['flock', 'semaphore'], 'bar' => ['semaphore']]]];
318-
yield [['enabled' => false, 'resources' => ['default' => 'flock']], ['enabled' => false, 'resources' => ['default' => ['flock']]]];
294+
yield [null, ['enabled' => true, 'resources' => ['default' => [class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphore:' : 'flock:']]]];
295+
296+
yield ['flock:', ['enabled' => true, 'resources' => ['default' => ['flock:']]]];
297+
yield [['flock:', 'semaphore:'], ['enabled' => true, 'resources' => ['default' => ['flock:', 'semaphore:']]]];
298+
yield [['foo' => 'flock:', 'bar' => 'semaphore:'], ['enabled' => true, 'resources' => ['foo' => ['flock:'], 'bar' => ['semaphore:']]]];
299+
yield [['foo' => ['flock:', 'semaphore:'], 'bar' => 'semaphore:'], ['enabled' => true, 'resources' => ['foo' => ['flock:', 'semaphore:'], 'bar' => ['semaphore:']]]];
300+
yield [['default' => 'flock:'], ['enabled' => true, 'resources' => ['default' => ['flock:']]]];
301+
302+
yield [['enabled' => false, 'flock:'], ['enabled' => false, 'resources' => ['default' => ['flock:']]]];
303+
yield [['enabled' => false, ['flock:', 'semaphore:']], ['enabled' => false, 'resources' => ['default' => ['flock:', 'semaphore:']]]];
304+
yield [['enabled' => false, 'foo' => 'flock:', 'bar' => 'semaphore:'], ['enabled' => false, 'resources' => ['foo' => ['flock:'], 'bar' => ['semaphore:']]]];
305+
yield [['enabled' => false, 'foo' => ['flock:', 'semaphore:']], ['enabled' => false, 'resources' => ['foo' => ['flock:', 'semaphore:']]]];
306+
yield [['enabled' => false, 'default' => 'flock:'], ['enabled' => false, 'resources' => ['default' => ['flock:']]]];
307+
308+
yield [['resources' => 'flock:'], ['enabled' => true, 'resources' => ['default' => ['flock:']]]];
309+
yield [['resources' => ['flock:', 'semaphore:']], ['enabled' => true, 'resources' => ['default' => ['flock:', 'semaphore:']]]];
310+
yield [['resources' => ['foo' => 'flock:', 'bar' => 'semaphore:']], ['enabled' => true, 'resources' => ['foo' => ['flock:'], 'bar' => ['semaphore:']]]];
311+
yield [['resources' => ['foo' => ['flock:', 'semaphore:'], 'bar' => 'semaphore:']], ['enabled' => true, 'resources' => ['foo' => ['flock:', 'semaphore:'], 'bar' => ['semaphore:']]]];
312+
yield [['resources' => ['default' => 'flock:']], ['enabled' => true, 'resources' => ['default' => ['flock:']]]];
313+
314+
yield [['enabled' => false, 'resources' => 'flock:'], ['enabled' => false, 'resources' => ['default' => ['flock:']]]];
315+
yield [['enabled' => false, 'resources' => ['flock:', 'semaphore:']], ['enabled' => false, 'resources' => ['default' => ['flock:', 'semaphore:']]]];
316+
yield [['enabled' => false, 'resources' => ['foo' => 'flock:', 'bar' => 'semaphore:']], ['enabled' => false, 'resources' => ['foo' => ['flock:'], 'bar' => ['semaphore:']]]];
317+
yield [['enabled' => false, 'resources' => ['foo' => ['flock:', 'semaphore:'], 'bar' => 'semaphore:']], ['enabled' => false, 'resources' => ['foo' => ['flock:', 'semaphore:'], 'bar' => ['semaphore:']]]];
318+
yield [['enabled' => false, 'resources' => ['default' => 'flock:']], ['enabled' => false, 'resources' => ['default' => ['flock:']]]];
319319

320320
// xml
321321

322-
yield [['resource' => ['flock']], ['enabled' => true, 'resources' => ['default' => ['flock']]]];
323-
yield [['resource' => ['flock', ['name' => 'foo', 'value' => 'semaphore']]], ['enabled' => true, 'resources' => ['default' => ['flock'], 'foo' => ['semaphore']]]];
324-
yield [['resource' => [['name' => 'foo', 'value' => 'flock']]], ['enabled' => true, 'resources' => ['foo' => ['flock']]]];
325-
yield [['resource' => [['name' => 'foo', 'value' => 'flock'], ['name' => 'foo', 'value' => 'semaphore']]], ['enabled' => true, 'resources' => ['foo' => ['flock', 'semaphore']]]];
326-
yield [['resource' => [['name' => 'foo', 'value' => 'flock'], ['name' => 'bar', 'value' => 'semaphore']]], ['enabled' => true, 'resources' => ['foo' => ['flock'], 'bar' => ['semaphore']]]];
327-
yield [['resource' => [['name' => 'foo', 'value' => 'flock'], ['name' => 'foo', 'value' => 'semaphore'], ['name' => 'bar', 'value' => 'semaphore']]], ['enabled' => true, 'resources' => ['foo' => ['flock', 'semaphore'], 'bar' => ['semaphore']]]];
328-
329-
yield [['enabled' => false, 'resource' => ['flock']], ['enabled' => false, 'resources' => ['default' => ['flock']]]];
330-
yield [['enabled' => false, 'resource' => ['flock', ['name' => 'foo', 'value' => 'semaphore']]], ['enabled' => false, 'resources' => ['default' => ['flock'], 'foo' => ['semaphore']]]];
331-
yield [['enabled' => false, 'resource' => [['name' => 'foo', 'value' => 'flock']]], ['enabled' => false, 'resources' => ['foo' => ['flock']]]];
332-
yield [['enabled' => false, 'resource' => [['name' => 'foo', 'value' => 'flock'], ['name' => 'foo', 'value' => 'semaphore']]], ['enabled' => false, 'resources' => ['foo' => ['flock', 'semaphore']]]];
333-
yield [['enabled' => false, 'resource' => [['name' => 'foo', 'value' => 'flock'], ['name' => 'bar', 'value' => 'semaphore']]], ['enabled' => false, 'resources' => ['foo' => ['flock'], 'bar' => ['semaphore']]]];
334-
yield [['enabled' => false, 'resource' => [['name' => 'foo', 'value' => 'flock'], ['name' => 'foo', 'value' => 'semaphore'], ['name' => 'bar', 'value' => 'semaphore']]], ['enabled' => false, 'resources' => ['foo' => ['flock', 'semaphore'], 'bar' => ['semaphore']]]];
322+
yield [['resource' => ['flock:']], ['enabled' => true, 'resources' => ['default' => ['flock:']]]];
323+
yield [['resource' => ['flock:', ['name' => 'foo', 'value' => 'semaphore:']]], ['enabled' => true, 'resources' => ['default' => ['flock:'], 'foo' => ['semaphore:']]]];
324+
yield [['resource' => [['name' => 'foo', 'value' => 'flock:']]], ['enabled' => true, 'resources' => ['foo' => ['flock:']]]];
325+
yield [['resource' => [['name' => 'foo', 'value' => 'flock:'], ['name' => 'foo', 'value' => 'semaphore:']]], ['enabled' => true, 'resources' => ['foo' => ['flock:', 'semaphore:']]]];
326+
yield [['resource' => [['name' => 'foo', 'value' => 'flock:'], ['name' => 'bar', 'value' => 'semaphore:']]], ['enabled' => true, 'resources' => ['foo' => ['flock:'], 'bar' => ['semaphore:']]]];
327+
yield [['resource' => [['name' => 'foo', 'value' => 'flock:'], ['name' => 'foo', 'value' => 'semaphore:'], ['name' => 'bar', 'value' => 'semaphore:']]], ['enabled' => true, 'resources' => ['foo' => ['flock:', 'semaphore:'], 'bar' => ['semaphore:']]]];
328+
329+
yield [['enabled' => false, 'resource' => ['flock:']], ['enabled' => false, 'resources' => ['default' => ['flock:']]]];
330+
yield [['enabled' => false, 'resource' => ['flock:', ['name' => 'foo', 'value' => 'semaphore:']]], ['enabled' => false, 'resources' => ['default' => ['flock:'], 'foo' => ['semaphore:']]]];
331+
yield [['enabled' => false, 'resource' => [['name' => 'foo', 'value' => 'flock:']]], ['enabled' => false, 'resources' => ['foo' => ['flock:']]]];
332+
yield [['enabled' => false, 'resource' => [['name' => 'foo', 'value' => 'flock:'], ['name' => 'foo', 'value' => 'semaphore:']]], ['enabled' => false, 'resources' => ['foo' => ['flock:', 'semaphore:']]]];
333+
yield [['enabled' => false, 'resource' => [['name' => 'foo', 'value' => 'flock:'], ['name' => 'bar', 'value' => 'semaphore:']]], ['enabled' => false, 'resources' => ['foo' => ['flock:'], 'bar' => ['semaphore:']]]];
334+
yield [['enabled' => false, 'resource' => [['name' => 'foo', 'value' => 'flock:'], ['name' => 'foo', 'value' => 'semaphore:'], ['name' => 'bar', 'value' => 'semaphore:']]], ['enabled' => false, 'resources' => ['foo' => ['flock:', 'semaphore:'], 'bar' => ['semaphore:']]]];
335335
}
336336

337337
public function testLockMergeConfigs()
@@ -344,15 +344,15 @@ public function testLockMergeConfigs()
344344
'handle_all_throwables' => true,
345345
'php_errors' => ['log' => true],
346346
'lock' => [
347-
'payload' => 'flock',
347+
'payload' => 'flock:',
348348
],
349349
],
350350
[
351351
'http_method_override' => false,
352352
'handle_all_throwables' => true,
353353
'php_errors' => ['log' => true],
354354
'lock' => [
355-
'payload' => 'semaphore',
355+
'payload' => 'semaphore:',
356356
],
357357
],
358358
]);
@@ -361,7 +361,7 @@ public function testLockMergeConfigs()
361361
[
362362
'enabled' => true,
363363
'resources' => [
364-
'payload' => ['semaphore'],
364+
'payload' => ['semaphore:'],
365365
],
366366
],
367367
$config['lock']
@@ -869,7 +869,7 @@ protected static function getBundleDefaultConfig()
869869
'enabled' => !class_exists(FullStack::class),
870870
'resources' => [
871871
'default' => [
872-
class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphore' : 'flock',
872+
class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphore:' : 'flock:',
873873
],
874874
],
875875
],

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/lock_named.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
'handle_all_throwables' => true,
99
'php_errors' => ['log' => true],
1010
'lock' => [
11-
'foo' => 'semaphore',
12-
'bar' => 'flock',
13-
'baz' => ['semaphore', 'flock'],
11+
'foo' => 'semaphore:',
12+
'bar' => 'flock:',
13+
'baz' => ['semaphore:', 'flock:'],
1414
'qux' => '%env(REDIS_DSN)%',
1515
],
1616
]);
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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+
'lock' => [
9+
'foo' => 'flock',
10+
'bar' => 'semaphore',
11+
'baz' => 'in-memory',
12+
],
13+
]);

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/lock_named.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
<framework:annotations enabled="false" />
1414
<framework:php-errors log="true" />
1515
<framework:lock>
16-
<framework:resource name="foo">semaphore</framework:resource>
17-
<framework:resource name="bar">flock</framework:resource>
18-
<framework:resource name="baz">semaphore</framework:resource>
19-
<framework:resource name="baz">flock</framework:resource>
16+
<framework:resource name="foo">semaphore:</framework:resource>
17+
<framework:resource name="bar">flock:</framework:resource>
18+
<framework:resource name="baz">semaphore:</framework:resource>
19+
<framework:resource name="baz">flock:</framework:resource>
2020
<framework:resource name="qux">%env(REDIS_DSN)%</framework:resource>
2121
</framework:lock>
2222
</framework:config>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" ?>
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:lock>
12+
<framework:resource name="foo">flock</framework:resource>
13+
<framework:resource name="bar">semaphore</framework:resource>
14+
<framework:resource name="baz">in-memory</framework:resource>
15+
</framework:lock>
16+
</framework:config>
17+
</container>

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/lock_named.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ framework:
88
php_errors:
99
log: true
1010
lock:
11-
foo: semaphore
12-
bar: flock
13-
baz: [semaphore, flock]
11+
foo: 'semaphore:'
12+
bar: 'flock:'
13+
baz: ['semaphore:', 'flock:']
1414
qux: "%env(REDIS_DSN)%"
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
framework:
2+
annotations: false
3+
http_method_override: false
4+
handle_all_throwables: true
5+
php_errors:
6+
log: true
7+
lock:
8+
foo: flock
9+
bar: semaphore
10+
baz: in-memory

0 commit comments

Comments
 (0)
0