Issue #3488179 by phenaproxima, thejimbirch: RecipeConfigurator::getIncludedRecipe() should statically cache recipe objects to avoid performance problems
(cherry picked from commit bc8a19c8f7
)
merge-requests/8400/merge
parent
5d70089198
commit
ee95592cf3
|
@ -15,6 +15,13 @@ final class RecipeConfigurator {
|
|||
*/
|
||||
public readonly array $recipes;
|
||||
|
||||
/**
|
||||
* A cache of already-loaded recipes, keyed by path.
|
||||
*
|
||||
* @var \Drupal\Core\Recipe\Recipe[]
|
||||
*/
|
||||
private static array $cache = [];
|
||||
|
||||
/**
|
||||
* @param string[] $recipes
|
||||
* A list of recipes for a recipe to apply. The recipes will be applied in
|
||||
|
@ -56,8 +63,11 @@ final class RecipeConfigurator {
|
|||
$path = $include_path . "/$name/recipe.yml";
|
||||
}
|
||||
|
||||
if (array_key_exists($path, static::$cache)) {
|
||||
return static::$cache[$path];
|
||||
}
|
||||
if (file_exists($path)) {
|
||||
return Recipe::createFromDirectory(dirname($path));
|
||||
return static::$cache[$path] = Recipe::createFromDirectory(dirname($path));
|
||||
}
|
||||
$search_path = dirname($path, 2);
|
||||
throw new UnknownRecipeException($name, $search_path, sprintf("Can not find the %s recipe, search path: %s", $name, $search_path));
|
||||
|
|
Loading…
Reference in New Issue