Skip to content

Commit cec8daf

Browse files
committed
MC-37006: Adding/removing disabled products to Magento flushes categories cache
1 parent ac545f1 commit cec8daf

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66

77
namespace Magento\CatalogSearch\Model\Indexer;
88

9+
use Magento\Catalog\Model\Product;
910
use Magento\CatalogSearch\Model\Indexer\Fulltext\Action\FullFactory;
1011
use Magento\CatalogSearch\Model\Indexer\Scope\State;
1112
use Magento\CatalogSearch\Model\Indexer\Scope\StateFactory;
1213
use Magento\CatalogSearch\Model\ResourceModel\Fulltext as FulltextResource;
1314
use Magento\Framework\App\ObjectManager;
15+
use Magento\Framework\Indexer\CacheContext;
1416
use Magento\Framework\Indexer\DimensionProviderInterface;
1517
use Magento\Store\Model\StoreDimensionProvider;
1618
use Magento\Indexer\Model\ProcessManager;
@@ -77,6 +79,11 @@ class Fulltext implements
7779
*/
7880
private $processManager;
7981

82+
/**
83+
* @var CacheContext
84+
*/
85+
private $cacheContext;
86+
8087
/**
8188
* @param FullFactory $fullActionFactory
8289
* @param IndexerHandlerFactory $indexerHandlerFactory
@@ -86,6 +93,7 @@ class Fulltext implements
8693
* @param DimensionProviderInterface $dimensionProvider
8794
* @param array $data
8895
* @param ProcessManager $processManager
96+
* @param CacheContext $cacheContext|null
8997
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
9098
*/
9199
public function __construct(
@@ -96,7 +104,8 @@ public function __construct(
96104
StateFactory $indexScopeStateFactory,
97105
DimensionProviderInterface $dimensionProvider,
98106
array $data,
99-
ProcessManager $processManager = null
107+
ProcessManager $processManager = null,
108+
CacheContext $cacheContext = null
100109
) {
101110
$this->fullAction = $fullActionFactory->create(['data' => $data]);
102111
$this->indexerHandlerFactory = $indexerHandlerFactory;
@@ -106,6 +115,7 @@ public function __construct(
106115
$this->indexScopeState = ObjectManager::getInstance()->get(State::class);
107116
$this->dimensionProvider = $dimensionProvider;
108117
$this->processManager = $processManager ?: ObjectManager::getInstance()->get(ProcessManager::class);
118+
$this->cacheContext = $cacheContext ?? ObjectManager::getInstance()->get(CacheContext::class);
109119
}
110120

111121
/**
@@ -145,6 +155,8 @@ public function executeByDimensions(array $dimensions, \Traversable $entityIds =
145155
$saveHandler->saveIndex($dimensions, $this->fullAction->rebuildStoreIndex($storeId));
146156

147157
$this->fulltextResource->resetSearchResultsByStore($storeId);
158+
159+
$this->cacheContext->registerTags([Product::CACHE_TAG]);
148160
} else {
149161
// internal implementation works only with array
150162
$entityIds = iterator_to_array($entityIds);
@@ -155,6 +167,8 @@ public function executeByDimensions(array $dimensions, \Traversable $entityIds =
155167
$saveHandler->deleteIndex($dimensions, new \ArrayIterator($productIds));
156168
$saveHandler->saveIndex($dimensions, $this->fullAction->rebuildStoreIndex($storeId, $productIds));
157169
}
170+
171+
$this->cacheContext->registerEntities(Product::CACHE_TAG, $productIds);
158172
}
159173
}
160174

0 commit comments

Comments
 (0)