Bug #26128
Doctrine persistence manager compilation should be configurable
Status: | Resolved | Start date: | 2011-04-19 | |
---|---|---|---|---|
Priority: | Should have | Due date: | ||
Assigned To: | Karsten Dambekalns | % Done: | 100% |
|
Category: | Persistence | |||
Target version: | - | |||
PHP Version: | Complexity: | |||
Has patch: | Affected Flow version: |
Description
The compile method of the Doctrine persistence manager is currently hard-coded inside the FLOW3 Metapackage:
class Package extends BasePackage { /** * Invokes custom PHP code directly after the package manager has been initialized. * * @param \F3\FLOW3\Core\Bootstrap $bootstrap The current bootstrap * @return void */ public function boot(\F3\FLOW3\Core\Bootstrap $bootstrap) { require_once(__DIR__ . '/../Resources/PHP/AutoLoader.php'); $bootstrap->registerCompiletimeCommandController('flow3:object'); $bootstrap->registerCompiletimeCommandController('flow3:core'); $bootstrap->registerCompiletimeCommandController('flow3:cache'); $dispatcher = $bootstrap->getSignalSlotDispatcher(); $dispatcher->connect('F3\FLOW3\Core\Bootstrap', 'finishedRuntimeRun', 'F3\FLOW3\Persistence\PersistenceManagerInterface', 'persistAll'); $dispatcher->connect('F3\FLOW3\Core\Bootstrap', 'bootstrapShuttingDown', 'F3\FLOW3\Configuration\ConfigurationManager', 'shutdown'); $dispatcher->connect('F3\FLOW3\Core\Bootstrap', 'bootstrapShuttingDown', 'F3\FLOW3\Object\ObjectManagerInterface', 'shutdown'); $dispatcher->connect('F3\FLOW3\Core\Bootstrap', 'bootstrapShuttingDown', 'F3\FLOW3\Reflection\ReflectionService', 'saveToCache'); $dispatcher->connect('F3\FLOW3\Command\CoreCommandController', 'finishedCompileCommand', 'F3\FLOW3\Persistence\Doctrine\PersistenceManager', 'compile'); } }
If an alternative (generic) persistence is used, there is no need for the compile call, especially since Doctrine puts restrictions on the model.
There should be some kind of configuration option to prevent the Doctrine compilation.
Associated revisions
[BUGFIX] Make doctrine update and compilation configurable
This change introduces a new configuration option "autoUpdate" that
controls if the doctrine commands for update and compilation should
be run.
Change-Id: I95165074115d16c70d00ccfb42512de2e8009cb6
Resolves: #26128
History
#1 Updated by Christopher Hlubek over 4 years ago
The mere existence of the PersistenceManager is a problem if no driver is configured:
Uncaught exception in line 147 of .../Packages/Framework/FLOW3/Resources/PHP/Doctrine/DBAL/DriverManager.php: The options 'driver' or 'driverClass' are mandatory if no PDO instance is given to DriverManager::getConnection()
Disabling the connect between finishedCompileCommand
and PersistenceManager->compile
fixes this problem, since no PersistenceManager will be created (given that another Backend and the generic PersistenceManager are configured).
#2 Updated by Karsten Dambekalns over 4 years ago
- Category set to Persistence
- Status changed from New to Accepted
#3 Updated by Christopher Hlubek over 4 years ago
The problem inside the package is gone. Now I face the problem, that the Doctrine compilation is always executed in non-production contexts in Bootstrap->initializeForRuntime:
if ($this->context !== 'Production') { $coreCache = $this->cacheManager->getCache('FLOW3_Core'); if ($coreCache->has('doctrineSetupRunning') === FALSE) { $coreCache->set('doctrineSetupRunning', 'White Russian', array(), 60); $this->systemLogger->log('Updating Doctrine DB and proxies', LOG_DEBUG); $this->executeCommand('flow3:doctrine:update'); $this->executeCommand('flow3:doctrine:compileproxies'); $coreCache->remove('doctrineSetupRunning'); } }
#4 Updated by Mr. Hudson about 4 years ago
Patch set 1 of change I95165074115d16c70d00ccfb42512de2e8009cb6 has been pushed to the review server.
It is available at http://review.typo3.org/2305
#5 Updated by Christopher Hlubek about 4 years ago
- Status changed from Accepted to Resolved
- % Done changed from 0 to 100
Applied in changeset a38bea4dca57eb736a796d731042b5956c454a3e.