Bug #54728
closedTask #49162: Rewrite install tool
Fake cache entry is never removed from cache array in CacheManager
0%
Description
In
typo3/sysext/install/Classes/Service/SqlExpectedSchemaService.php the method getCachingFrameworkRequiredDatabaseSchema()creates a fake cache identifier and add it to the cache array in of the cacheManager. This leads to a cache entry like cf_extbase_object52c595582cc57. Later same method replaces this entry with the actual tables and pass this new cache settings to the setCacheConfigurations() of the CacheManager.
Unfortunately this doesn't remove the fake entry from the cache arrays ($caches and $cacheConfigurations) of the CacheManager. At the end TYPO3 holds a fake cache in memory which it tries to delete when typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php flushes the caches in method install().
In fact it tries to truncate the db table cf_extbase_object52c595582cc57 which doesn't exists. The error didn't raised an error because the mysqli query function just returns a "FALSE" which is not evaluated in typo3/sysext/core/Classes/Cache/Backend/Typo3DatabaseBackend.php within flush().
I came across the error while I create a ext:dbal like extension but using Doctrine. Doctrine throws an exception due the missing table.
I discussed this topic with Ernesto and we committed to introduce a removeCache() function into the CacheManager.