|
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