Skip to content

Commit 5bf78eb

Browse files
ENGCOM-6533: #26206 Add information about currently reindexed index. #26207
2 parents 42e6d7a + a296099 commit 5bf78eb

File tree

2 files changed

+49
-38
lines changed

2 files changed

+49
-38
lines changed

app/code/Magento/Indexer/Console/Command/IndexerReindexCommand.php

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66

77
namespace Magento\Indexer\Console\Command;
88

9+
use Magento\Framework\App\ObjectManagerFactory;
910
use Magento\Framework\Console\Cli;
1011
use Magento\Framework\Exception\LocalizedException;
1112
use Magento\Framework\Indexer\Config\DependencyInfoProvider;
13+
use Magento\Framework\Indexer\ConfigInterface;
1214
use Magento\Framework\Indexer\IndexerInterface;
1315
use Magento\Framework\Indexer\IndexerRegistry;
1416
use Magento\Framework\Indexer\StateInterface;
1517
use Symfony\Component\Console\Input\InputInterface;
1618
use Symfony\Component\Console\Output\OutputInterface;
17-
use Magento\Framework\Indexer\ConfigInterface;
18-
use Magento\Framework\App\ObjectManagerFactory;
1919

2020
/**
2121
* Command to run indexers
@@ -78,6 +78,9 @@ protected function execute(InputInterface $input, OutputInterface $output)
7878
foreach ($this->getIndexers($input) as $indexer) {
7979
try {
8080
$this->validateIndexerStatus($indexer);
81+
82+
$output->write($indexer->getTitle() . ' index ');
83+
8184
$startTime = microtime(true);
8285
$indexerConfig = $this->getConfig()->getIndexer($indexer->getId());
8386
$sharedIndex = $indexerConfig['shared_index'];
@@ -90,17 +93,21 @@ protected function execute(InputInterface $input, OutputInterface $output)
9093
}
9194
}
9295
$resultTime = microtime(true) - $startTime;
96+
9397
$output->writeln(
94-
$indexer->getTitle() . ' index has been rebuilt successfully in ' . gmdate('H:i:s', $resultTime)
98+
__('has been rebuilt successfully in %time', ['time' => gmdate('H:i:s', $resultTime)])
9599
);
96100
$returnValue = Cli::RETURN_SUCCESS;
97101
} catch (LocalizedException $e) {
98-
$output->writeln($e->getMessage());
102+
$output->writeln(__('exception: %message', ['message' => $e->getMessage()]));
99103
} catch (\Exception $e) {
100-
$output->writeln($indexer->getTitle() . ' indexer process unknown error:');
104+
$output->writeln('process unknown error:');
101105
$output->writeln($e->getMessage());
106+
107+
$output->writeln($e->getTraceAsString(), OutputInterface::VERBOSITY_DEBUG);
102108
}
103109
}
110+
104111
return $returnValue;
105112
}
106113

@@ -111,25 +118,23 @@ protected function execute(InputInterface $input, OutputInterface $output)
111118
*/
112119
protected function getIndexers(InputInterface $input)
113120
{
114-
$indexers = parent::getIndexers($input);
121+
$indexers = parent::getIndexers($input);
115122
$allIndexers = $this->getAllIndexers();
116123
if (!array_diff_key($allIndexers, $indexers)) {
117124
return $indexers;
118125
}
119126

120-
$relatedIndexers = [];
121-
$dependentIndexers = [];
127+
$relatedIndexers = [[]];
128+
$dependentIndexers = [[]];
129+
122130
foreach ($indexers as $indexer) {
123-
$relatedIndexers = array_merge(
124-
$relatedIndexers,
125-
$this->getRelatedIndexerIds($indexer->getId())
126-
);
127-
$dependentIndexers = array_merge(
128-
$dependentIndexers,
129-
$this->getDependentIndexerIds($indexer->getId())
130-
);
131+
$relatedIndexers[] = $this->getRelatedIndexerIds($indexer->getId());
132+
$dependentIndexers[] = $this->getDependentIndexerIds($indexer->getId());
131133
}
132134

135+
$relatedIndexers = array_merge(...$relatedIndexers);
136+
$dependentIndexers = array_merge(...$dependentIndexers);
137+
133138
$invalidRelatedIndexers = [];
134139
foreach (array_unique($relatedIndexers) as $relatedIndexer) {
135140
if ($allIndexers[$relatedIndexer]->isInvalid()) {
@@ -157,18 +162,15 @@ protected function getIndexers(InputInterface $input)
157162
* @param string $indexerId
158163
* @return array
159164
*/
160-
private function getRelatedIndexerIds(string $indexerId)
165+
private function getRelatedIndexerIds(string $indexerId): array
161166
{
162-
$relatedIndexerIds = [];
167+
$relatedIndexerIds = [[]];
163168
foreach ($this->getDependencyInfoProvider()->getIndexerIdsToRunBefore($indexerId) as $relatedIndexerId) {
164-
$relatedIndexerIds = array_merge(
165-
$relatedIndexerIds,
166-
[$relatedIndexerId],
167-
$this->getRelatedIndexerIds($relatedIndexerId)
168-
);
169+
$relatedIndexerIds[] = [$relatedIndexerId];
170+
$relatedIndexerIds[] = $this->getRelatedIndexerIds($relatedIndexerId);
169171
}
170172

171-
return array_unique($relatedIndexerIds);
173+
return array_unique(array_merge(...$relatedIndexerIds));
172174
}
173175

174176
/**
@@ -177,21 +179,18 @@ private function getRelatedIndexerIds(string $indexerId)
177179
* @param string $indexerId
178180
* @return array
179181
*/
180-
private function getDependentIndexerIds(string $indexerId)
182+
private function getDependentIndexerIds(string $indexerId): array
181183
{
182-
$dependentIndexerIds = [];
184+
$dependentIndexerIds = [[]];
183185
foreach (array_keys($this->getConfig()->getIndexers()) as $id) {
184186
$dependencies = $this->getDependencyInfoProvider()->getIndexerIdsToRunBefore($id);
185187
if (array_search($indexerId, $dependencies) !== false) {
186-
$dependentIndexerIds = array_merge(
187-
$dependentIndexerIds,
188-
[$id],
189-
$this->getDependentIndexerIds($id)
190-
);
188+
$dependentIndexerIds[] = [$id];
189+
$dependentIndexerIds[] = $this->getDependentIndexerIds($id);
191190
}
192191
}
193192

194-
return array_unique($dependentIndexerIds);
193+
return array_unique(array_merge(...$dependentIndexerIds));
195194
}
196195

197196
/**

app/code/Magento/Indexer/Test/Unit/Console/Command/IndexerReindexCommandTest.php

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
*/
2323
class IndexerReindexCommandTest extends AbstractIndexerCommandCommonSetup
2424
{
25+
const STUB_INDEXER_NAME = 'Indexer Name';
2526
/**
2627
* Command being tested
2728
*
@@ -107,7 +108,7 @@ public function testExecuteAll()
107108
[
108109
$this->getIndexerMock(
109110
['reindexAll', 'getStatus'],
110-
['indexer_id' => 'id_indexerOne', 'title' => 'Title_indexerOne']
111+
['indexer_id' => 'id_indexerOne', 'title' => self::STUB_INDEXER_NAME]
111112
)
112113
]
113114
);
@@ -117,7 +118,10 @@ public function testExecuteAll()
117118
$commandTester->execute([]);
118119
$actualValue = $commandTester->getDisplay();
119120
$this->assertSame(Cli::RETURN_SUCCESS, $commandTester->getStatusCode());
120-
$this->assertStringStartsWith('Title_indexerOne index has been rebuilt successfully in', $actualValue);
121+
$this->assertStringStartsWith(
122+
self::STUB_INDEXER_NAME . ' index has been rebuilt successfully in',
123+
$actualValue
124+
);
121125
}
122126

123127
/**
@@ -174,6 +178,7 @@ public function testExecuteWithIndex(
174178
$this->objectManagerFactory,
175179
$this->indexerRegistryMock
176180
);
181+
177182
$commandTester = new CommandTester($this->command);
178183
$commandTester->execute(['index' => $inputIndexers]);
179184
$this->assertSame(Cli::RETURN_SUCCESS, $commandTester->getStatusCode());
@@ -344,7 +349,8 @@ public function executeWithIndexDataProvider()
344349
],
345350
'With dependencies and multiple indexers in request' => [
346351
'inputIndexers' => [
347-
'indexer_1', 'indexer_3'
352+
'indexer_1',
353+
'indexer_3'
348354
],
349355
'indexers' => [
350356
'indexer_2' => [
@@ -405,7 +411,10 @@ public function executeWithIndexDataProvider()
405411
public function testExecuteWithLocalizedException()
406412
{
407413
$this->configureAdminArea();
408-
$indexerOne = $this->getIndexerMock(['reindexAll', 'getStatus'], ['indexer_id' => 'indexer_1']);
414+
$indexerOne = $this->getIndexerMock(
415+
['reindexAll', 'getStatus'],
416+
['indexer_id' => 'indexer_1', 'title' => self::STUB_INDEXER_NAME]
417+
);
409418
$localizedException = new LocalizedException(new Phrase('Some Exception Message'));
410419
$indexerOne->expects($this->once())->method('reindexAll')->will($this->throwException($localizedException));
411420
$this->initIndexerCollectionByItems([$indexerOne]);
@@ -414,7 +423,10 @@ public function testExecuteWithLocalizedException()
414423
$commandTester->execute(['index' => ['indexer_1']]);
415424
$actualValue = $commandTester->getDisplay();
416425
$this->assertSame(Cli::RETURN_FAILURE, $commandTester->getStatusCode());
417-
$this->assertStringStartsWith('Some Exception Message', $actualValue);
426+
$this->assertStringStartsWith(
427+
self::STUB_INDEXER_NAME . ' index exception: Some Exception Message',
428+
$actualValue
429+
);
418430
}
419431

420432
public function testExecuteWithException()
@@ -433,7 +445,7 @@ public function testExecuteWithException()
433445
$commandTester->execute(['index' => ['indexer_1']]);
434446
$actualValue = $commandTester->getDisplay();
435447
$this->assertSame(Cli::RETURN_FAILURE, $commandTester->getStatusCode());
436-
$this->assertStringStartsWith('Title_indexer_1' . ' indexer process unknown error:', $actualValue);
448+
$this->assertStringStartsWith('Title_indexer_1' . ' index process unknown error:', $actualValue);
437449
}
438450

439451
public function testExecuteWithExceptionInGetIndexers()

0 commit comments

Comments
 (0)