8.3.13 (2025-01-15)
Overview of merged pull requests
BUGFIX: Fix race-condition when initializing I18n Service
We noticed in our error logs that we had quite a few errors being thrown from here <https://github.com/neos/flow-development-collection/blob/``b82054f980913d63aecd917692b4213bf034854a <https://github.com/neos/flow-development-collection/commit/b82054f980913d63aecd917692b4213bf034854a>`_/Neos.Flow/Classes/I18n/Service.php#L256-L257>`_:
`
Call to a member function findBestMatchingLocale() on bool
```
My best guess is that this is due to a race-condition when the service is called for the first time on a host by multiple requests simultaneously.
In general, the pattern of first checking if some value is in the cache, and then reading the value out afterwards without checking it is never safe, as a different process/thread could have removed it.
The safe way is to read the value out once, and verify that it is set correctly (e.g. it should not === false
).
I think there’s a few other places that follow the same unsafe pattern, but I suggest that they are addresses separately from this PR.
I haven’t added any tests for this case, but please let me know if you have any ideas of how to test this.
Packages:
Flow
BUGFIX: Add missing validation labels
When you use Neos.Form and the Neos.Form.FusionRenderer with the File Upload, there’s a chance that the file extension isn’t valid. In that case, the validation error should be displayed, but the labels are in Flow, and the label for the case is missing.
This change adds the missing label for the validation error message.
Fixes: #3430
Packages:
Flow
FluidAdaptor
BUGFIX: Adjust to PHP 8.3 get_parent_class() deprecation
Somehow, https://github.com/neos/flow-development-collection/pull/3351/files only targeted Flow 9.0, but per the docs, Flow 8.3 also supports PHP 8.3. This is just a backport of these changes.
Packages:
Flow
BUGFIX: Fix method param type expansion for partial annotation coverage
Adjusts the behavior of ReflectionService::getMethodParameters()
such that @param
annotations are mapped to the corresponding method argument based in their _name_ instead of the _index_.
Fixes: #3423
Packages:
Flow
BUGFIX: Don’t load the same files twice in the static resource collection
The second pattern included a 99% subset of the first pattern except the files in the public folders themselves. Therefore all files in subfolders were loaded twice in the \\Neos\\Flow\\ResourceManagement\\Collection::getObjects
method and afterwards also published twice.
In a medium sized project the first pattern loaded 1165 files and the second pattern 1155 which were all duplicates.
An additional change is required to deduplicate paths loaded in the Collection
class to prevent further configuration regressions for cases like this.
Resolves: #3417
Review instructions
Delete the
Web/_Resources/Static
folder in a demo distributionRun
./flow resource:publish --collection static
Reload the Neos backend and all the static resources like JS and CSS should still be there.
Packages:
Flow
TASK: Correctly mark nullable method parameters as nullable
Replaces #3427
This PR will correctly mark implicit nullable types as nullable, which will remove deprecation warnings in PHP 8.4.
I’ve used rector to migrate all occurrences. https://getrector.com/rule-detail/explicit-nullable-param-type-rector
See also for Neos: https://github.com/neos/neos-development-collection/pull/5433
Note: We should run the rector migration again on 9.0 after upmerging this PR
Thanks to @Benjamin-K for bringing this up and providing the first PR (#3427).
Packages:
Cache
Eel
Error.Messages
Flow.Log
Flow
FluidAdaptor
Http.Factories
Utility.Files
Utility.MediaTypes
Utility.ObjectHandling
Utility.OpcodeCache
Utility.Unicode
TASK: Uniquify exception codes in Abstract(Template)View
Exception codes are supposed to be unique, so this makes sure those places get a code of their own.
Upgrade instructions
If you rely on that exception code (1359625876
) for whatever reason, consider taking the new codes into account, too:
1359625877
1359625878
1359625879
1359625880
1359625881
1359625882
1359625883
Review instructions
You could check if any of the new codes is in use already, in turn… 😬
Packages:
Flow
TASK: Use Symfony ConsoleLogger instead of Doctrine
Resolves: https://github.com/neos/flow-development-collection/issues/3404
In next minor release (3.9) doctrine/migration will remove the ConsoleLogger See: https://github.com/doctrine/migrations/pull/1449
To prevent any issues after release of this we replace the ConsoleLogger of doctrine with ConsoleLogger of Symfony.
Packages:
Flow