From 45d6906777232125142badb1c0cd2d2a47d0f9e0 Mon Sep 17 00:00:00 2001 From: Ronald Boada Date: Wed, 27 May 2026 12:17:37 +0200 Subject: [PATCH] Catch IOException in CacheCleaner to prevent upgrade abort when cache files are locked by running processes --- classes/UpgradeTools/CacheCleaner.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/classes/UpgradeTools/CacheCleaner.php b/classes/UpgradeTools/CacheCleaner.php index 4b7d0cf3f3..9639d9d439 100644 --- a/classes/UpgradeTools/CacheCleaner.php +++ b/classes/UpgradeTools/CacheCleaner.php @@ -24,6 +24,7 @@ use Exception; use PrestaShop\Module\AutoUpgrade\Log\LoggerInterface; use PrestaShop\Module\AutoUpgrade\UpgradeContainer; +use Symfony\Component\Filesystem\Exception\IOException; class CacheCleaner { @@ -71,8 +72,15 @@ public function cleanFolders(): void $this->logger->debug($this->container->getTranslator()->trans('Directory "%s" does not exist and cannot be emptied.', [str_replace($this->container->getProperty(UpgradeContainer::PS_ROOT_PATH), '', $dir)])); continue; } - $this->container->getFilesystemAdapter()->clearDirectory($dir); - $this->logger->debug($this->container->getTranslator()->trans('Directory %s emptied', [$dir])); + try { + $this->container->getFilesystemAdapter()->clearDirectory($dir); + $this->logger->debug($this->container->getTranslator()->trans('Directory %s emptied', [$dir])); + } catch (IOException $e) { + $this->logger->warning($this->container->getTranslator()->trans( + 'Could not fully clear directory %s: %s. Some cache files may be locked by running processes.', + [$dir, $e->getMessage()] + )); + } } } }