Project

General

Profile

Actions

Bug #54728

closed

Task #49162: Rewrite install tool

Fake cache entry is never removed from cache array in CacheManager

Added by Stefano Kowalke almost 11 years ago. Updated almost 10 years ago.

Status:
Rejected
Priority:
Should have
Assignee:
-
Category:
Caching
Target version:
Start date:
2014-01-03
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
6.2
PHP Version:
5.4
Tags:
Complexity:
Is Regression:
No
Sprint Focus:

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.

Actions

Also available in: Atom PDF