Skip to content

Commit c381b4d

Browse files
committed
ACP2E-1569: Elasticsearch Indexer document version changes version when new/existing products are imported
1 parent bf3b892 commit c381b4d

File tree

2 files changed

+23
-21
lines changed

2 files changed

+23
-21
lines changed

app/code/Magento/CatalogImportExport/Model/Import/Product.php

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
use Magento\Framework\Model\ResourceModel\Db\ObjectRelationProcessor;
3232
use Magento\Framework\Model\ResourceModel\Db\TransactionManagerInterface;
3333
use Magento\Framework\Stdlib\DateTime;
34-
use Magento\Framework\Indexer\Config\DependencyInfoProviderInterface;
3534
use Magento\ImportExport\Model\Import;
3635
use Magento\ImportExport\Model\Import\Entity\AbstractEntity;
3736
use Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingError;
@@ -768,11 +767,6 @@ class Product extends AbstractEntity
768767
*/
769768
private $stockItemProcessor;
770769

771-
/**
772-
* @var DependencyInfoProviderInterface
773-
*/
774-
private $dependencyInfoProvider;
775-
776770
/**
777771
* @param \Magento\Framework\Json\Helper\Data $jsonHelper
778772
* @param \Magento\ImportExport\Helper\Data $importExportData
@@ -823,7 +817,6 @@ class Product extends AbstractEntity
823817
* @param LinkProcessor|null $linkProcessor
824818
* @param File|null $fileDriver
825819
* @param StockItemProcessorInterface|null $stockItemProcessor
826-
* @param DependencyInfoProviderInterface|null $dependencyInfoProvider
827820
* @throws LocalizedException
828821
* @throws \Magento\Framework\Exception\FileSystemException
829822
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
@@ -879,8 +872,7 @@ public function __construct(
879872
StockProcessor $stockProcessor = null,
880873
LinkProcessor $linkProcessor = null,
881874
?File $fileDriver = null,
882-
?StockItemProcessorInterface $stockItemProcessor = null,
883-
?DependencyInfoProviderInterface $dependencyInfoProvider = null
875+
?StockItemProcessorInterface $stockItemProcessor = null
884876
) {
885877
$this->_eventManager = $eventManager;
886878
$this->stockRegistry = $stockRegistry;
@@ -946,8 +938,6 @@ public function __construct(
946938
->get(ProductRepositoryInterface::class);
947939
$this->stockItemProcessor = $stockItemProcessor ?? ObjectManager::getInstance()
948940
->get(StockItemProcessorInterface::class);
949-
$this->dependencyInfoProvider = $dependencyInfoProvider ?? ObjectManager::getInstance()
950-
->get(DependencyInfoProviderInterface::class);
951941
}
952942

953943
/**
@@ -2483,15 +2473,6 @@ private function reindexProducts($productIdsToReindex = [])
24832473
foreach ($indexersToReindex as $id) {
24842474
$indexer = $this->indexerRegistry->get($id);
24852475
if (!$indexer->isScheduled()) {
2486-
//trick for dependent indexers in scheduled mode
2487-
//related issue: AC-7851
2488-
$idsToRunBefore = $this->dependencyInfoProvider->getIndexerIdsToRunBefore($id);
2489-
foreach ($idsToRunBefore as $dependentId) {
2490-
$dependentIndexer = $this->indexerRegistry->get($dependentId);
2491-
if ($dependentIndexer->isScheduled()) {
2492-
$dependentIndexer->reindexList($productIdsToReindex);
2493-
}
2494-
}
24952476
$indexer->reindexList($productIdsToReindex);
24962477
}
24972478
}

app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
use Magento\Catalog\Model\Product;
1010
use Magento\Catalog\Model\ProductFactory;
1111
use Magento\Catalog\Model\ResourceModel\Indexer\ActiveTableSwitcher;
12+
use Magento\Catalog\Model\Indexer\Product\Price\Processor as PriceIndexProcessor;
13+
use Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor;
1214
use Magento\CatalogRule\Model\Indexer\IndexBuilder\ProductLoader;
1315
use Magento\CatalogRule\Model\Indexer\IndexerTableSwapperInterface as TableSwapper;
1416
use Magento\CatalogRule\Model\ResourceModel\Rule\Collection as RuleCollection;
@@ -18,6 +20,7 @@
1820
use Magento\Framework\App\ObjectManager;
1921
use Magento\Framework\App\ResourceConnection;
2022
use Magento\Framework\Exception\LocalizedException;
23+
use Magento\Framework\Indexer\IndexerRegistry;
2124
use Magento\Framework\Pricing\PriceCurrencyInterface;
2225
use Magento\Framework\Stdlib\DateTime;
2326
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
@@ -167,6 +170,11 @@ class IndexBuilder
167170
*/
168171
private $productLoader;
169172

173+
/**
174+
* @var IndexerRegistry
175+
*/
176+
private $indexerRegistry;
177+
170178
/**
171179
* @param RuleCollectionFactory $ruleCollectionFactory
172180
* @param PriceCurrencyInterface $priceCurrency
@@ -188,6 +196,7 @@ class IndexBuilder
188196
* @param ProductLoader|null $productLoader
189197
* @param TableSwapper|null $tableSwapper
190198
* @param TimezoneInterface|null $localeDate
199+
* @param IndexerRegistry|null $indexerRegistry
191200
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
192201
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
193202
*/
@@ -211,7 +220,8 @@ public function __construct(
211220
ActiveTableSwitcher $activeTableSwitcher = null,
212221
ProductLoader $productLoader = null,
213222
TableSwapper $tableSwapper = null,
214-
TimezoneInterface $localeDate = null
223+
TimezoneInterface $localeDate = null,
224+
IndexerRegistry $indexerRegistry = null
215225
) {
216226
$this->resource = $resource;
217227
$this->connection = $resource->getConnection();
@@ -253,6 +263,8 @@ public function __construct(
253263
ObjectManager::getInstance()->get(TableSwapper::class);
254264
$this->localeDate = $localeDate ??
255265
ObjectManager::getInstance()->get(TimezoneInterface::class);
266+
$this->indexerRegistry = $indexerRegistry ??
267+
ObjectManager::getInstance()->get(IndexerRegistry::class);
256268
}
257269

258270
/**
@@ -323,6 +335,15 @@ protected function doReindexByIds($ids)
323335
$this->reindexRuleProductPrice->execute($this->batchCount, $productId);
324336
}
325337

338+
//the case was not handled via indexer dependency decorator or via mview configuration
339+
$ruleIndexer = $this->indexerRegistry->get(RuleProductProcessor::INDEXER_ID);
340+
if ($ruleIndexer->isScheduled()) {
341+
$priceIndexer = $this->indexerRegistry->get(PriceIndexProcessor::INDEXER_ID);
342+
if (!$priceIndexer->isScheduled()) {
343+
$priceIndexer->reindexList($ids);
344+
}
345+
}
346+
326347
$this->reindexRuleGroupWebsite->execute();
327348
}
328349

0 commit comments

Comments
 (0)