|
11 | 11 | use Magento\Catalog\Model\View\Asset\PlaceholderFactory; |
12 | 12 | use Magento\Framework\App\Filesystem\DirectoryList; |
13 | 13 | use Magento\Framework\App\ObjectManager; |
| 14 | +use Magento\Framework\Exception\FileSystemException; |
14 | 15 | use Magento\Framework\Image as MagentoImage; |
15 | 16 | use Magento\Framework\Serialize\SerializerInterface; |
16 | 17 |
|
@@ -836,37 +837,12 @@ public function getWatermarkHeight() |
836 | 837 | public function clearCache() |
837 | 838 | { |
838 | 839 | $directory = $this->_catalogProductMediaConfig->getBaseMediaPath() . '/cache'; |
839 | | - $directoryToDelete = $directory; |
840 | | - // Fixes issue when deleting cache directory at the same time that images are being |
841 | | - // lazy-loaded on storefront leading to new directories and files generation in the cache directory |
842 | | - // that would prevent deletion of the cache directory. |
843 | | - // RCA: the method delete() recursively enumerates and delete all subdirectories and files before deleting |
844 | | - // the target directory, which gives other processes time to create directories and files in the same directory. |
845 | | - // Solution: Rename the directory to simulate deletion and delete the destination directory afterward |
846 | | - |
847 | 840 | try { |
848 | | - //generate name in format: \.[0-9A-ZA-z-_]{3} (e.g .QX3) |
849 | | - $tmpDirBasename = strrev(strtr(base64_encode(random_bytes(2)), '+/=', '-_.')); |
850 | | - $tmpDirectory = $this->_catalogProductMediaConfig->getBaseMediaPath() . '/' . $tmpDirBasename; |
851 | | - //delete temporary directory if exists |
852 | | - if ($this->_mediaDirectory->isDirectory($tmpDirectory)) { |
853 | | - $this->_mediaDirectory->delete($tmpDirectory); |
854 | | - } |
855 | | - //rename the directory to simulate deletion and delete the destination directory |
856 | | - if ($this->_mediaDirectory->isDirectory($directory) && |
857 | | - true === $this->_mediaDirectory->getDriver()->rename( |
858 | | - $this->_mediaDirectory->getAbsolutePath($directory), |
859 | | - $this->_mediaDirectory->getAbsolutePath($tmpDirectory) |
860 | | - ) |
861 | | - ) { |
862 | | - $directoryToDelete = $tmpDirectory; |
863 | | - } |
864 | | - } catch (\Throwable $exception) { |
865 | | - //ignore exceptions thrown during renaming |
866 | | - $directoryToDelete = $directory; |
| 841 | + $this->_mediaDirectory->delete($directory); |
| 842 | + } |
| 843 | + // phpcs:ignore Magento2.CodeAnalysis.EmptyBlock.DetectedCatch |
| 844 | + catch (FileSystemException $e) { |
867 | 845 | } |
868 | | - |
869 | | - $this->_mediaDirectory->delete($directoryToDelete); |
870 | 846 |
|
871 | 847 | $this->_coreFileStorageDatabase->deleteFolder($this->_mediaDirectory->getAbsolutePath($directory)); |
872 | 848 | $this->clearImageInfoFromCache(); |
|
0 commit comments