Skip to content

Commit

Permalink
Fix infinite loop
Browse files Browse the repository at this point in the history
  • Loading branch information
rliebi committed Mar 14, 2024
1 parent c1e08ff commit b6aa861
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 16 deletions.
1 change: 1 addition & 0 deletions src/Messenger/Handler/RefreshElementHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@ public function __invoke(RefreshElement $message): void
$element = $this->resolveElement($message);

$this->propagateChanges->handle($element);
$this->propagateChanges->handleRelatedObjects($element);
}
}
36 changes: 20 additions & 16 deletions src/Service/PropagateChanges.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,26 @@ public function handleIndex(
$this->doHandleIndex($element, $index, $elasticaIndex ?? $index->getElasticaIndex());
}

/**
* @param AbstractElement $element
*
* @return void
*/
public function handleRelatedObjects(AbstractElement $element): void
{
$indices = $this->matchingIndicesForElement($this->indexRepository->flattenedAll(), $element);
$relatedObjects = [];

foreach ($indices as $index) {
$document = $index->findDocumentInstanceByPimcore($element);
$relatedObjects += $document?->relatedObjects($element);
}

foreach ($relatedObjects as $relatedObject) {
$this->handle($relatedObject);
}
}

private function doHandleIndex(
AbstractElement $element,
IndexInterface $index,
Expand Down Expand Up @@ -84,7 +104,6 @@ private function doHandleIndex(
$this->deleteElementFromIndex($element, $elasticaIndex, $document);
}

$this->handleRelatedObjects($element, $document);
$this->cachesToClear($document);
$this->documentHelper->resetTenantIfNeeded($document, $index);
}
Expand Down Expand Up @@ -163,21 +182,6 @@ private function isIdInIndex(string $id, Index $index): bool
return true;
}

/**
* @param AbstractElement $element
* @param DocumentInterface<AbstractElement> $document
*
* @return void
*/
private function handleRelatedObjects(AbstractElement $element, DocumentInterface $document): void
{
$relatedObjects = $document->relatedObjects($element);

foreach ($relatedObjects as $relatedObject) {
$this->handle($relatedObject);
}
}

/**
* @param DocumentInterface<AbstractElement> $document
*
Expand Down

0 comments on commit b6aa861

Please sign in to comment.