ConfigurationManager setters make system unstable
We are slowly moving our projects from LTS 4.5 to LTS 6.2 and one of the issues we recently encountered is the usage of the configuration manager's (\TYPO3\CMS\Core\Configuration\ConfigurationManager) setters (setLocalConfigurationValueByPath & setLocalConfigurationValuesByPathValuePairs). Based on the "What's new" documentation for TYPO3 6.0 (http://typo3.org/download/release-notes/whats-new/) I was under the impression that using the configuration manager's getter/setters was the "new" way to do things. However, any attempt to use these methods quickly runs into
( ! ) Catchable fatal error: Argument 1 passed to TYPO3\CMS\Core\Utility\ArrayUtility::setValueByPath() must be an array
It turns out that the setter's failure to implement any kind of locking introduces a race condition which apparently cannot be fixed (@see Markus Klein's comment https://forge.typo3.org/issues/60294#note-13).
This all begs the question, why this method is available at all. What is the purpose of providing (and documenting) an API method which introduces a known issue and makes the system unstable?