Skip to content

Commit c111091

Browse files
bug #33998 [Config] Disable default alphabet sorting in glob function due of unstable sort (hurricane-voronin)
This PR was squashed before being merged into the 3.4 branch. Discussion ---------- [Config] Disable default alphabet sorting in glob function due of unstable sort …table sort | Q | A | ------------- | --- | Branch? | 3.4 <!-- see below --> | Bug fix? | yes | New feature? | no <!-- please update src/**/CHANGELOG.md files --> | Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tickets | Fix #33990 <!-- prefix each issue number with "Fix #", if any --> | License | MIT | Doc PR | no <!-- required for new features --> `\Symfony\Component\Config\Resource\GlobResource::getIterator` loads files using `glob` not it the stable sorting, e.g several files: `doctrine.yml` and `doctrine_mongodb.yaml` in `config/packages` folder. On requests these files come(randomly) in a different order, which leads to reinitialization of symfony kernel in `dev` environment. It's a little bit annoying and takes a lot of time in a common :( <!-- Additionally (see https://symfony.com/roadmap): - Always add tests and ensure they pass. - Never break backward compatibility (see https://symfony.com/bc). - Bug fixes must be submitted against the lowest maintained branch where they apply (lowest branches are regularly merged to upper ones so they get the fixes too.) - Features and deprecations must be submitted against branch 4.4. - Legacy code removals go to the master branch. --> Commits ------- 3bed0247c0 [Config] Disable default alphabet sorting in glob function due of unstable sort
2 parents d213ff5 + 82f7df5 commit c111091

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

Resource/GlobResource.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,9 @@ public function getIterator()
100100
}
101101

102102
if (0 !== strpos($this->prefix, 'phar://') && false === strpos($this->pattern, '/**/') && (\defined('GLOB_BRACE') || false === strpos($this->pattern, '{'))) {
103-
foreach (glob($this->prefix.$this->pattern, \defined('GLOB_BRACE') ? GLOB_BRACE : 0) as $path) {
103+
$paths = glob($this->prefix.$this->pattern, GLOB_NOSORT | (\defined('GLOB_BRACE') ? GLOB_BRACE : 0));
104+
sort($paths);
105+
foreach ($paths as $path) {
104106
if ($this->recursive && is_dir($path)) {
105107
$files = iterator_to_array(new \RecursiveIteratorIterator(
106108
new \RecursiveCallbackFilterIterator(

0 commit comments

Comments
 (0)