diff --git a/core/modules/path_alias/src/AliasManager.php b/core/modules/path_alias/src/AliasManager.php index 0ea87703c9..e02c16014d 100644 --- a/core/modules/path_alias/src/AliasManager.php +++ b/core/modules/path_alias/src/AliasManager.php @@ -219,7 +219,13 @@ public function getAliasByPath($path, $langcode = NULL) { // Load paths from cache. if (!empty($this->preloadedPathLookups[$langcode])) { - $this->lookupMap[$langcode] = $this->pathAliasRepository->preloadPathAlias($this->preloadedPathLookups[$langcode], $langcode); + // Split it into chunks so we don't get massive slow query. + $chunks = array_chunk($this->preloadedPathLookups[$langcode], 100, TRUE); + foreach ($chunks as $chunk) { + $preloaded = $this->pathAliasRepository->preloadPathAlias($chunk, $langcode); + // Place preloaded chunk into lookupMap. + $this->lookupMap[$langcode] = array_merge($this->lookupMap[$langcode], $preloaded); + } // Keep a record of paths with no alias to avoid querying twice. $this->noAlias[$langcode] = array_flip(array_diff_key($this->preloadedPathLookups[$langcode], array_keys($this->lookupMap[$langcode]))); }