Bug #62301

ConfigurationManager setters make system unstable

Added by Lukas Rüegg 10 months ago. Updated 5 months ago.

Status:Rejected Start date:2014-10-17
Priority:Won't have this time Due date:
Assigned To:- % Done:

0%

Category:- Spent time: -
Target version:-
TYPO3 Version:6.2 Is Regression:No
PHP Version:5.4 Sprint Focus:
Complexity:

Description

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?


Related issues

related to Core - Bug #60294: If a local file storage is outside the document root, ima... Closed 2014-07-13
related to Core - Bug #60650: ConfigurationManager::getConfigurationValueByPath ignores... Resolved 2014-07-29

History

#1 Updated by Christian Kuhn 8 months ago

  • Status changed from New to Needs Feedback

Hey Simon. I have the strong feeling you're misusing this API. The ConfigurationManager class is used to take care of LocalConfiguration file and friends. It is not meant to be called in a plugin on a regular basis (eg. in ext_tables or ext_localconf), since this would always trigger a rewrite of those files - and you definitely don't want this.

The ConfigurationManager class is for configuration management & changing only, so there shouldn't be any regular call by extensions or your setup during production use.

I wonder what you wanted to achieve in the first place?

#2 Updated by Anja Leichsenring 5 months ago

  • Status changed from Needs Feedback to Rejected
  • Priority changed from Must have to Won't have this time

Most probably no bug, but user based API misuse. I close this ticket after three month without feedback.

Also available in: Atom PDF