Skip to content

Commit c584e2a

Browse files
authored
Merge pull request #71 from matt-in-a-hat/fix-reindex-all-job-index-name-error
Fix ReindexAllJob error using class name for index name
2 parents 1fe0229 + 78c6712 commit c584e2a

7 files changed

+45
-36
lines changed

src/Extensions/AlgoliaObjectExtension.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ public function doImmediateIndexInAlgolia(): bool
236236
return true;
237237
}
238238
} catch (Throwable $e) {
239-
Injector::inst()->create(LoggerInterface::class)->error($e);
239+
Injector::inst()->get(LoggerInterface::class)->error($e);
240240

241241
$schema = DataObject::getSchema();
242242
$table = $schema->tableForField($this->owner->ClassName, 'AlgoliaError');
@@ -291,7 +291,7 @@ public function removeFromAlgolia(): bool
291291

292292
$this->markAsRemovedFromAlgoliaIndex();
293293
} catch (Throwable $e) {
294-
Injector::inst()->create(LoggerInterface::class)->error($e);
294+
Injector::inst()->get(LoggerInterface::class)->error($e);
295295

296296
return false;
297297
}

src/Jobs/AlgoliaDeleteItemJob.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public function process()
5555
$indexer = Injector::inst()->create(AlgoliaIndexer::class);
5656
$indexer->deleteItem($this->itemClass, $this->itemUUID);
5757
} catch (Throwable $e) {
58-
Injector::inst()->create(LoggerInterface::class)->error($e);
58+
Injector::inst()->get(LoggerInterface::class)->error($e);
5959
}
6060

6161
$this->isComplete = true;

src/Jobs/AlgoliaReindexAllJob.php

+37-28
Original file line numberDiff line numberDiff line change
@@ -104,49 +104,58 @@ public function process()
104104
return;
105105
}
106106

107+
$algoliaService = Injector::inst()->create(AlgoliaService::class);
107108
$task = new AlgoliaReindex();
108109

109110
$batchSize = $task->config()->get('batch_size');
110111
$batching = $this->config()->get('use_batching');
111112

112113
foreach ($remainingChildren as $class => $ids) {
113-
$take = array_slice($ids, 0, $batchSize);
114-
$this->indexData[$class] = array_slice($ids, $batchSize);
114+
foreach ($algoliaService->indexes as $indexName => $index) {
115+
$classes = (isset($index['includeClasses'])) ? $index['includeClasses'] : [];
115116

116-
if (!empty($take)) {
117-
$this->currentStep += count($take);
118-
$errors = [];
117+
if (!in_array($class, $classes)) {
118+
continue;
119+
}
119120

120-
try {
121-
if ($batching) {
122-
if ($task->indexItems($class, DataObject::get($class)->filter('ID', $take), false)) {
123-
$this->addMessage('Successfully indexing ' . $class . ' [' . implode(', ', $take) . ']');
124-
} else {
125-
$this->addMessage('Error indexing ' . $class . ' [' . implode(', ', $take) . ']');
126-
}
127-
} else {
128-
$items = DataObject::get($class)->filter('ID', $take);
121+
$take = array_slice($ids, 0, $batchSize);
122+
$this->indexData[$class] = array_slice($ids, $batchSize);
123+
124+
if (!empty($take)) {
125+
$this->currentStep += count($take);
126+
$errors = [];
129127

130-
foreach ($items as $item) {
131-
if ($task->indexItem($item)) {
132-
$this->addMessage('Successfully indexed ' . $class . ' [' . $item->ID . ']');
128+
try {
129+
if ($batching) {
130+
if ($task->indexItems($indexName, DataObject::get($class)->filter('ID', $take), false)) {
131+
$this->addMessage('Successfully indexing ' . $class . ' [' . implode(', ', $take) . ']');
133132
} else {
134-
$this->addMessage('Error indexing ' . $class . ' [' . $item->ID . ']');
133+
$this->addMessage('Error indexing ' . $class . ' [' . implode(', ', $take) . ']');
134+
}
135+
} else {
136+
$items = DataObject::get($class)->filter('ID', $take);
137+
138+
foreach ($items as $item) {
139+
if ($task->indexItem($item)) {
140+
$this->addMessage('Successfully indexed ' . $class . ' [' . $item->ID . ']');
141+
} else {
142+
$this->addMessage('Error indexing ' . $class . ' [' . $item->ID . ']');
143+
}
135144
}
136145
}
137-
}
138146

139-
$errors = $task->getErrors();
140-
} catch (Throwable $e) {
141-
$errors[] = $e->getMessage();
142-
}
147+
$errors = $task->getErrors();
148+
} catch (Throwable $e) {
149+
$errors[] = $e->getMessage();
150+
}
143151

144-
if (!empty($errors)) {
145-
$this->addMessage(implode(', ', $errors));
146-
$task->clearErrors();
152+
if (!empty($errors)) {
153+
$this->addMessage(implode(', ', $errors));
154+
$task->clearErrors();
155+
}
156+
} else {
157+
unset($this->indexData[$class]);
147158
}
148-
} else {
149-
unset($this->indexData[$class]);
150159
}
151160
}
152161
}

src/Service/AlgoliaIndexer.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ public function exportAttributesFromRelationship($item, $relationship, $attribut
324324

325325
$attributes->push($relationship, $data);
326326
} catch (Throwable $e) {
327-
Injector::inst()->create(LoggerInterface::class)->error($e);
327+
Injector::inst()->get(LoggerInterface::class)->error($e);
328328
}
329329
}
330330

src/Service/AlgoliaPageCrawler.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public function getMainContent(): string
117117
}
118118
}
119119
} catch (Throwable $e) {
120-
Injector::inst()->create(LoggerInterface::class)->error($e);
120+
Injector::inst()->get(LoggerInterface::class)->error($e);
121121
}
122122

123123
SSViewer::set_themes($oldThemes);

src/Service/AlgoliaService.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public function initIndexes($item = null, $excludeReplicas = true)
141141
return [];
142142
}
143143
} catch (Throwable $e) {
144-
Injector::inst()->create(LoggerInterface::class)->error($e);
144+
Injector::inst()->get(LoggerInterface::class)->error($e);
145145

146146
if (Director::isDev()) {
147147
Debug::message($e->getMessage());
@@ -277,7 +277,7 @@ function ($replica) {
277277

278278
$index->setSettings($data['indexSettings']);
279279
} catch (Throwable $e) {
280-
Injector::inst()->create(LoggerInterface::class)->error($e);
280+
Injector::inst()->get(LoggerInterface::class)->error($e);
281281

282282

283283
return false;

src/Tasks/AlgoliaReindex.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ public function indexBatch($indexName, $items): bool
308308

309309
return true;
310310
} catch (Throwable $e) {
311-
Injector::inst()->create(LoggerInterface::class)->error($e);
311+
Injector::inst()->get(LoggerInterface::class)->error($e);
312312

313313
if (Director::isDev()) {
314314
Debug::message($e->getMessage());

0 commit comments

Comments
 (0)