|
13 | 13 | use Magento\Framework\App\ObjectManager;
|
14 | 14 | use Magento\Framework\Indexer\DimensionProviderInterface;
|
15 | 15 | use Magento\Framework\Indexer\SaveHandler\EnhancedIndexerInterface;
|
| 16 | +use Magento\Framework\Indexer\SaveHandler\IndexerInterface; |
16 | 17 | use Magento\Store\Model\StoreDimensionProvider;
|
17 | 18 | use Magento\Indexer\Model\ProcessManager;
|
18 | 19 | use Magento\Framework\App\DeploymentConfig;
|
@@ -203,26 +204,32 @@ public function executeByDimensions(array $dimensions, \Traversable $entityIds =
|
203 | 204 | /**
|
204 | 205 | * Process batch
|
205 | 206 | *
|
206 |
| - * @param EnhancedIndexerInterface $saveHandler |
| 207 | + * @param IndexerInterface $saveHandler |
207 | 208 | * @param array $dimensions
|
208 | 209 | * @param array $entityIds
|
209 | 210 | * @throws \Exception
|
210 | 211 | */
|
211 | 212 | private function processBatch(
|
212 |
| - EnhancedIndexerInterface $saveHandler, |
| 213 | + IndexerInterface $saveHandler, |
213 | 214 | array $dimensions,
|
214 | 215 | array $entityIds
|
215 | 216 | ) : void {
|
216 | 217 | $storeId = $dimensions[StoreDimensionProvider::DIMENSION_NAME]->getValue();
|
217 | 218 | $productIds = array_unique(
|
218 | 219 | array_merge($entityIds, $this->fulltextResource->getRelationsByChild($entityIds))
|
219 | 220 | );
|
| 221 | + |
220 | 222 | if ($saveHandler->isAvailable($dimensions)) {
|
221 |
| - $saveHandler->enableStackedActions(); |
222 |
| - $saveHandler->deleteIndex($dimensions, new \ArrayIterator($productIds)); |
223 |
| - $saveHandler->saveIndex($dimensions, $this->fullAction->rebuildStoreIndex($storeId, $productIds)); |
224 |
| - $saveHandler->triggerStackedActions(); |
225 |
| - $saveHandler->disableStackedActions(); |
| 223 | + if (in_array(EnhancedIndexerInterface::class, class_implements($saveHandler))) { |
| 224 | + $saveHandler->enableStackedActions(); |
| 225 | + $saveHandler->deleteIndex($dimensions, new \ArrayIterator($productIds)); |
| 226 | + $saveHandler->saveIndex($dimensions, $this->fullAction->rebuildStoreIndex($storeId, $productIds)); |
| 227 | + $saveHandler->triggerStackedActions(); |
| 228 | + $saveHandler->disableStackedActions(); |
| 229 | + } else { |
| 230 | + $saveHandler->deleteIndex($dimensions, new \ArrayIterator($productIds)); |
| 231 | + $saveHandler->saveIndex($dimensions, $this->fullAction->rebuildStoreIndex($storeId, $productIds)); |
| 232 | + } |
226 | 233 | }
|
227 | 234 | }
|
228 | 235 |
|
|
0 commit comments