diff --git a/typo3/sysext/install/Classes/Controller/UpgradeController.php b/typo3/sysext/install/Classes/Controller/UpgradeController.php index 60facea7a2b779d06f68acb4352dca9c912ae92c..6236a0457a55d557a2f64507cf7b58f597130488 100644 --- a/typo3/sysext/install/Classes/Controller/UpgradeController.php +++ b/typo3/sysext/install/Classes/Controller/UpgradeController.php @@ -789,6 +789,8 @@ class UpgradeController extends AbstractController $loadTcaService = GeneralUtility::makeInstance(LoadTcaService::class); $loadTcaService->loadExtensionTablesWithoutMigration(); $baseTca = $GLOBALS['TCA']; + $container = $this->lateBootService->getContainer(); + $backup = $this->lateBootService->makeCurrent($container); foreach ($this->packageManager->getActivePackages() as $package) { $this->extensionCompatTesterLoadExtLocalconfForExtension($package); @@ -807,6 +809,7 @@ class UpgradeController extends AbstractController $baseTca = $newTca; } } + $this->lateBootService->makeCurrent(null, $backup); return new JsonResponse([ 'success' => true, 'status' => $messageQueue, diff --git a/typo3/sysext/install/Classes/Service/LateBootService.php b/typo3/sysext/install/Classes/Service/LateBootService.php index 0a9518b67cf4eacedf8aaa7120501ad5cc3e6fca..b85e860c8e9c6210ea0297203c201acfca73e227 100644 --- a/typo3/sysext/install/Classes/Service/LateBootService.php +++ b/typo3/sysext/install/Classes/Service/LateBootService.php @@ -85,15 +85,16 @@ class LateBootService * is specified * * @param ContainerInterface $container - * @param array $oldBackup + * @param array $backup * @return array */ - public function makeCurrent(ContainerInterface $container = null, array $oldBackup = []): array + public function makeCurrent(ContainerInterface $container = null, array $backup = []): array { - $container = $container ?? $this->failsafeContainer; + $container = $container ?? $backup['container'] ?? $this->failsafeContainer; - $backup = [ - 'singletonInstances', GeneralUtility::getSingletonInstances(), + $newBackup = [ + 'singletonInstances' => GeneralUtility::getSingletonInstances(), + 'container' => GeneralUtility::getContainer(), ]; GeneralUtility::purgeInstances(); @@ -102,12 +103,12 @@ class LateBootService GeneralUtility::setContainer($container); ExtensionManagementUtility::setPackageManager($container->get(PackageManager::class)); - $backupSingletonInstances = $oldBackup['singletonInstances'] ?? []; + $backupSingletonInstances = $backup['singletonInstances'] ?? []; foreach ($backupSingletonInstances as $className => $instance) { GeneralUtility::setSingletonInstance($className, $instance); } - return $backup; + return $newBackup; } /**