|
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