From 061aeb9b6dc24f21e09ea7a7416e2ac27c5f555b Mon Sep 17 00:00:00 2001 From: Chandru Rajendran Date: Tue, 12 May 2020 00:41:16 +0530 Subject: [PATCH 1/5] Status of cache types channged after running setup:upgrade --- setup/src/Magento/Setup/Model/Installer.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index 20f9ca6c9c50b..80c7207376cef 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -870,12 +870,17 @@ private function convertationOfOldScriptsIsAllowed(array $request) */ public function installDataFixtures(array $request = []) { + $cacheState = $this->objectManagerProvider->get()->create(\Magento\Framework\App\Cache\StateInterface::class); $frontendCaches = [ PageCache::TYPE_IDENTIFIER, BlockCache::TYPE_IDENTIFIER, LayoutCache::TYPE_IDENTIFIER, ]; + foreach ($frontendCaches as $cacheType) { + $oldCacheStatus[$cacheType] = $cacheState->isEnabled($cacheType); + } + /** @var \Magento\Framework\Registry $registry */ $registry = $this->objectManagerProvider->get()->get(\Magento\Framework\Registry::class); //For backward compatibility in install and upgrade scripts with enabled parallelization. @@ -890,7 +895,7 @@ public function installDataFixtures(array $request = []) $this->updateCaches(false, $frontendCaches); $this->handleDBSchemaData($setup, 'data', $request); $this->log->log('Enabling caches:'); - $this->updateCaches(true, $frontendCaches); + $this->updateCaches(true, $frontendCaches, $oldCacheStatus); $registry->unregister('setup-mode-enabled'); } @@ -1286,14 +1291,22 @@ public function uninstall() * @param array $types * @return void */ - private function updateCaches($isEnabled, $types = []) + private function updateCaches($isEnabled, $types = [], $oldCacheStatus = null) { /** @var \Magento\Framework\App\Cache\Manager $cacheManager */ $cacheManager = $this->objectManagerProvider->get()->create(\Magento\Framework\App\Cache\Manager::class); $availableTypes = $cacheManager->getAvailableTypes(); $types = empty($types) ? $availableTypes : array_intersect($availableTypes, $types); - $enabledTypes = $cacheManager->setEnabled($types, $isEnabled); + if ($isEnabled == true) { + foreach ($oldCacheStatus as $type => $status) { + $enabledTypes = $cacheManager->setEnabled((array)$type, $status); + } + } + else + { + $enabledTypes = $cacheManager->setEnabled($types, $isEnabled); + } if ($isEnabled) { $cacheManager->clean($enabledTypes); } @@ -1306,7 +1319,6 @@ function (string $key) use ($types) { }, ARRAY_FILTER_USE_KEY ); - $this->log->log('Current status:'); // phpcs:ignore Magento2.Functions.DiscouragedFunction $this->log->log(print_r($cacheStatus, true)); From 8dc42aab81d47c7a5df43cc92bc0b3e6beabf586 Mon Sep 17 00:00:00 2001 From: Chandru Rajendran Date: Tue, 12 May 2020 00:56:39 +0530 Subject: [PATCH 2/5] small cchanges --- setup/src/Magento/Setup/Model/Installer.php | 1 + 1 file changed, 1 insertion(+) diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index 80c7207376cef..c5c5cda1a7955 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -1319,6 +1319,7 @@ function (string $key) use ($types) { }, ARRAY_FILTER_USE_KEY ); + $this->log->log('Current status:'); // phpcs:ignore Magento2.Functions.DiscouragedFunction $this->log->log(print_r($cacheStatus, true)); From 894f3a229fbaa1e09f9f83fa4fcb305192a77042 Mon Sep 17 00:00:00 2001 From: Chandru Rajendran Date: Sat, 16 May 2020 21:46:45 +0530 Subject: [PATCH 3/5] refactor --- setup/src/Magento/Setup/Model/Installer.php | 26 ++++++++++----------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index c5c5cda1a7955..5321619f5f8f9 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -872,15 +872,11 @@ public function installDataFixtures(array $request = []) { $cacheState = $this->objectManagerProvider->get()->create(\Magento\Framework\App\Cache\StateInterface::class); $frontendCaches = [ - PageCache::TYPE_IDENTIFIER, - BlockCache::TYPE_IDENTIFIER, - LayoutCache::TYPE_IDENTIFIER, + PageCache::TYPE_IDENTIFIER => $cacheState->isEnabled(PageCache::TYPE_IDENTIFIER), + BlockCache::TYPE_IDENTIFIER => $cacheState->isEnabled(BlockCache::TYPE_IDENTIFIER), + LayoutCache::TYPE_IDENTIFIER => $cacheState->isEnabled(LayoutCache::TYPE_IDENTIFIER) ]; - foreach ($frontendCaches as $cacheType) { - $oldCacheStatus[$cacheType] = $cacheState->isEnabled($cacheType); - } - /** @var \Magento\Framework\Registry $registry */ $registry = $this->objectManagerProvider->get()->get(\Magento\Framework\Registry::class); //For backward compatibility in install and upgrade scripts with enabled parallelization. @@ -895,7 +891,7 @@ public function installDataFixtures(array $request = []) $this->updateCaches(false, $frontendCaches); $this->handleDBSchemaData($setup, 'data', $request); $this->log->log('Enabling caches:'); - $this->updateCaches(true, $frontendCaches, $oldCacheStatus); + $this->updateCaches(true, $frontendCaches); $registry->unregister('setup-mode-enabled'); } @@ -1291,21 +1287,23 @@ public function uninstall() * @param array $types * @return void */ - private function updateCaches($isEnabled, $types = [], $oldCacheStatus = null) + private function updateCaches($isEnabled, $types = []) { /** @var \Magento\Framework\App\Cache\Manager $cacheManager */ $cacheManager = $this->objectManagerProvider->get()->create(\Magento\Framework\App\Cache\Manager::class); + $cacheTypes = array_keys($types); + $cachestatuses = array_values($types); $availableTypes = $cacheManager->getAvailableTypes(); - $types = empty($types) ? $availableTypes : array_intersect($availableTypes, $types); + $cacheTypes = empty($cacheTypes) ? $availableTypes : array_intersect($availableTypes, $cacheTypes); if ($isEnabled == true) { - foreach ($oldCacheStatus as $type => $status) { + foreach ($types as $type => $status) { $enabledTypes = $cacheManager->setEnabled((array)$type, $status); } } else { - $enabledTypes = $cacheManager->setEnabled($types, $isEnabled); + $enabledTypes = $cacheManager->setEnabled($cacheTypes, $isEnabled); } if ($isEnabled) { $cacheManager->clean($enabledTypes); @@ -1314,8 +1312,8 @@ private function updateCaches($isEnabled, $types = [], $oldCacheStatus = null) // Only get statuses of specific cache types $cacheStatus = array_filter( $cacheManager->getStatus(), - function (string $key) use ($types) { - return in_array($key, $types); + function (string $key) use ($cacheTypes) { + return in_array($key, $cacheTypes); }, ARRAY_FILTER_USE_KEY ); From 3bb734e262ce98fc12c74c86930ba305ba0775ca Mon Sep 17 00:00:00 2001 From: Chandru Rajendran Date: Wed, 20 May 2020 15:26:06 +0530 Subject: [PATCH 4/5] Refactor --- setup/src/Magento/Setup/Model/Installer.php | 1 - 1 file changed, 1 deletion(-) diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index 5321619f5f8f9..c03c643e8ad31 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -1293,7 +1293,6 @@ private function updateCaches($isEnabled, $types = []) $cacheManager = $this->objectManagerProvider->get()->create(\Magento\Framework\App\Cache\Manager::class); $cacheTypes = array_keys($types); - $cachestatuses = array_values($types); $availableTypes = $cacheManager->getAvailableTypes(); $cacheTypes = empty($cacheTypes) ? $availableTypes : array_intersect($availableTypes, $cacheTypes); if ($isEnabled == true) { From 440c0db66fe90807ffb0325e4e0227e18927a540 Mon Sep 17 00:00:00 2001 From: Ihor Sviziev Date: Thu, 27 Aug 2020 12:01:25 +0300 Subject: [PATCH 5/5] Status of cache types changed after running setup:upgrade --- setup/src/Magento/Setup/Model/Installer.php | 34 ++++++++++++--------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php index 8b149dde24787..1c1f57a491ab5 100644 --- a/setup/src/Magento/Setup/Model/Installer.php +++ b/setup/src/Magento/Setup/Model/Installer.php @@ -8,6 +8,7 @@ use Magento\Backend\Setup\ConfigOptionsList as BackendConfigOptionsList; use Magento\Framework\App\Cache\Manager; +use Magento\Framework\App\Cache\StateInterface; use Magento\Framework\App\Cache\Type\Block as BlockCache; use Magento\Framework\App\Cache\Type\Config as ConfigCache; use Magento\Framework\App\Cache\Type\Layout as LayoutCache; @@ -30,6 +31,7 @@ use Magento\Framework\Module\ModuleList\Loader as ModuleLoader; use Magento\Framework\Module\ModuleListInterface; use Magento\Framework\Mview\TriggerCleaner; +use Magento\Framework\Registry; use Magento\Framework\Setup\Declaration\Schema\DryRunLogger; use Magento\Framework\Setup\FilePermissions; use Magento\Framework\Setup\InstallDataInterface; @@ -878,8 +880,8 @@ private function cleanMemoryTables(SchemaSetupInterface $setup) */ public function installSchema(array $request) { - /** @var \Magento\Framework\Registry $registry */ - $registry = $this->objectManagerProvider->get()->get(\Magento\Framework\Registry::class); + /** @var Registry $registry */ + $registry = $this->objectManagerProvider->get()->get(Registry::class); //For backward compatibility in install and upgrade scripts with enabled parallelization. $registry->register('setup-mode-enabled', true); @@ -926,15 +928,16 @@ private function convertationOfOldScriptsIsAllowed(array $request) */ public function installDataFixtures(array $request = []) { - $cacheState = $this->objectManagerProvider->get()->create(\Magento\Framework\App\Cache\StateInterface::class); + /** @var StateInterface $cacheState */ + $cacheState = $this->objectManagerProvider->get()->get(StateInterface::class); $frontendCaches = [ PageCache::TYPE_IDENTIFIER => $cacheState->isEnabled(PageCache::TYPE_IDENTIFIER), BlockCache::TYPE_IDENTIFIER => $cacheState->isEnabled(BlockCache::TYPE_IDENTIFIER), LayoutCache::TYPE_IDENTIFIER => $cacheState->isEnabled(LayoutCache::TYPE_IDENTIFIER) ]; - /** @var \Magento\Framework\Registry $registry */ - $registry = $this->objectManagerProvider->get()->get(\Magento\Framework\Registry::class); + /** @var Registry $registry */ + $registry = $this->objectManagerProvider->get()->get(Registry::class); //For backward compatibility in install and upgrade scripts with enabled parallelization. $registry->register('setup-mode-enabled', true); @@ -1356,7 +1359,7 @@ public function uninstall() * @return void * @throws Exception */ - private function updateCaches($isEnabled, $types = []) + private function updateCaches(bool $isEnabled, array $types = []): void { /** @var Manager $cacheManager */ $cacheManager = $this->objectManagerProvider->get()->create(Manager::class); @@ -1364,17 +1367,20 @@ private function updateCaches($isEnabled, $types = []) $cacheTypes = array_keys($types); $availableTypes = $cacheManager->getAvailableTypes(); $cacheTypes = empty($cacheTypes) ? $availableTypes : array_intersect($availableTypes, $cacheTypes); - if ($isEnabled == true) { + + if ($isEnabled) { + $enabledTypes = []; + foreach ($types as $type => $status) { - $enabledTypes = $cacheManager->setEnabled((array)$type, $status); + $enabledTypes[] = $cacheManager->setEnabled((array)$type, $status); } - } - else - { - $enabledTypes = $cacheManager->setEnabled($cacheTypes, $isEnabled); - } - if ($isEnabled) { + + $enabledTypes = array_merge([], ...$enabledTypes); + $cacheManager->clean($enabledTypes); + + } else { + $cacheManager->setEnabled($cacheTypes, $isEnabled); } // Only get statuses of specific cache types