Skip to content

Commit 0be633f

Browse files
committed
ACP2E-2631: Hidden directories in pub/media/catalog/product cause disk space issues
1 parent 6a5060a commit 0be633f

File tree

1 file changed

+5
-29
lines changed
  • app/code/Magento/Catalog/Model/Product

1 file changed

+5
-29
lines changed

app/code/Magento/Catalog/Model/Product/Image.php

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Magento\Catalog\Model\View\Asset\PlaceholderFactory;
1212
use Magento\Framework\App\Filesystem\DirectoryList;
1313
use Magento\Framework\App\ObjectManager;
14+
use Magento\Framework\Exception\FileSystemException;
1415
use Magento\Framework\Image as MagentoImage;
1516
use Magento\Framework\Serialize\SerializerInterface;
1617

@@ -836,37 +837,12 @@ public function getWatermarkHeight()
836837
public function clearCache()
837838
{
838839
$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-
847840
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) {
867845
}
868-
869-
$this->_mediaDirectory->delete($directoryToDelete);
870846

871847
$this->_coreFileStorageDatabase->deleteFolder($this->_mediaDirectory->getAbsolutePath($directory));
872848
$this->clearImageInfoFromCache();

0 commit comments

Comments
 (0)