Skip to content

Commit e787921

Browse files
committed
MAGETWO-93671: [Forwardport] Implement parallelization for Search Indexer
1 parent df575d8 commit e787921

File tree

4 files changed

+28
-2
lines changed

4 files changed

+28
-2
lines changed

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

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Magento\CatalogSearch\Model\ResourceModel\Fulltext as FulltextResource;
1111
use Magento\Framework\Indexer\Dimension\DimensionProviderInterface;
1212
use Magento\Store\Model\StoreDimensionProvider;
13+
use Magento\Indexer\Model\ProcessManager;
1314

1415
/**
1516
* Provide functionality for Fulltext Search indexing.
@@ -62,14 +63,20 @@ class Fulltext implements
6263
*/
6364
private $dimensionProvider;
6465

66+
/**
67+
* @var ProcessManager
68+
*/
69+
private $processManager;
70+
6571
/**
6672
* @param FullFactory $fullActionFactory
6773
* @param IndexerHandlerFactory $indexerHandlerFactory
6874
* @param FulltextResource $fulltextResource
69-
* @param array $data
7075
* @param IndexSwitcherInterface $indexSwitcher
7176
* @param StateFactory $indexScopeStateFactory
7277
* @param DimensionProviderInterface $dimensionProvider
78+
* @param ProcessManager $processManager
79+
* @param array $data
7380
*/
7481
public function __construct(
7582
FullFactory $fullActionFactory,
@@ -78,6 +85,7 @@ public function __construct(
7885
IndexSwitcherInterface $indexSwitcher,
7986
StateFactory $indexScopeStateFactory,
8087
DimensionProviderInterface $dimensionProvider,
88+
ProcessManager $processManager,
8189
array $data
8290
) {
8391
$this->fullAction = $fullActionFactory->create(['data' => $data]);
@@ -87,6 +95,7 @@ public function __construct(
8795
$this->indexSwitcher = $indexSwitcher;
8896
$this->indexScopeState = $indexScopeStateFactory->create();
8997
$this->dimensionProvider = $dimensionProvider;
98+
$this->processManager = $processManager;
9099
}
91100

92101
/**
@@ -145,9 +154,13 @@ public function executeByDimension(array $dimensions, \Traversable $entityIds =
145154
*/
146155
public function executeFull()
147156
{
157+
$userFunctions = [];
148158
foreach ($this->dimensionProvider->getIterator() as $dimension) {
149-
$this->executeByDimension($dimension);
159+
$userFunctions[] = function () use ($dimension) {
160+
$this->executeByDimension($dimension);
161+
};
150162
}
163+
$this->processManager->execute($userFunctions);
151164
}
152165

153166
/**

app/code/Magento/CatalogSearch/Test/Unit/Model/Indexer/FulltextTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ class FulltextTest extends \PHPUnit\Framework\TestCase
4444
*/
4545
private $dimensionProviderMock;
4646

47+
/**
48+
* @var \Magento\Indexer\Model\ProcessManager|\PHPUnit_Framework_MockObject_MockObject
49+
*/
50+
private $processManager;
51+
4752
protected function setUp()
4853
{
4954
$this->fullAction = $this->getClassMock(\Magento\CatalogSearch\Model\Indexer\Fulltext\Action\Full::class);
@@ -70,6 +75,11 @@ protected function setUp()
7075
$stateMock = $this->getMockBuilder(\Magento\CatalogSearch\Model\Indexer\Scope\State::class)
7176
->getMock();
7277
$objectManagerHelper = new ObjectManagerHelper($this);
78+
79+
$this->processManager = new \Magento\Indexer\Model\ProcessManager(
80+
$this->getClassMock(\Magento\Framework\App\ResourceConnection::class)
81+
);
82+
7383
$this->model = $objectManagerHelper->getObject(
7484
\Magento\CatalogSearch\Model\Indexer\Fulltext::class,
7585
[
@@ -80,6 +90,7 @@ protected function setUp()
8090
'indexSwitcher' => $this->indexSwitcher,
8191
'dimensionProvider' => $this->dimensionProviderMock,
8292
'indexScopeState' => $stateMock,
93+
'processManager' => $this->processManager,
8394
]
8495
);
8596
}

app/code/Magento/CatalogSearch/composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"magento/framework": "*",
1010
"magento/module-backend": "*",
1111
"magento/module-catalog": "*",
12+
"magento/module-indexer": "100.2.*",
1213
"magento/module-catalog-inventory": "*",
1314
"magento/module-customer": "*",
1415
"magento/module-directory": "*",

app/code/Magento/CatalogSearch/etc/module.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<sequence>
1111
<module name="Magento_Search"/>
1212
<module name="Magento_Catalog"/>
13+
<module name="Magento_Indexer"/>
1314
<module name="Magento_CatalogRule" />
1415
<module name="Magento_CatalogInventory" />
1516
</sequence>

0 commit comments

Comments
 (0)