Skip to content

Commit

Permalink
[FrameworkBundle] Generate caches consistently on successive run of `…
Browse files Browse the repository at this point in the history
…cache:clear` command
  • Loading branch information
Okhoshi committed May 6, 2023
1 parent 3835573 commit 81e1db5
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 22 deletions.
1 change: 1 addition & 0 deletions src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md
Expand Up @@ -4,6 +4,7 @@ CHANGELOG
6.2
---

* Generate caches consistently on successive run of `cache:clear` command
* Add `resolve-env` option to `debug:config` command to display actual values of environment variables in dumped configuration
* Add `NotificationAssertionsTrait`
* Add option `framework.handle_all_throwables` to allow `Symfony\Component\HttpKernel\HttpKernel` to handle all kinds of `Throwable`
Expand Down
45 changes: 23 additions & 22 deletions src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php
Expand Up @@ -129,14 +129,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
if ($output->isVerbose()) {
$io->comment('Warming up optional cache...');
}
$warmer = $kernel->getContainer()->get('cache_warmer');
// non optional warmers already ran during container compilation
$warmer->enableOnlyOptionalWarmers();
$preload = (array) $warmer->warmUp($realCacheDir);

if ($preload && file_exists($preloadFile = $realCacheDir.'/'.$kernel->getContainer()->getParameter('kernel.container_class').'.preload.php')) {
Preloader::append($preloadFile, $preload);
}
$this->warmupOptionals($realCacheDir);
}
} else {
$fs->mkdir($warmupDir);
Expand All @@ -145,7 +138,14 @@ protected function execute(InputInterface $input, OutputInterface $output): int
if ($output->isVerbose()) {
$io->comment('Warming up cache...');
}
$this->warmup($warmupDir, $realCacheDir, !$input->getOption('no-optional-warmers'));
$this->warmup($warmupDir, $realBuildDir);

if (!$input->getOption('no-optional-warmers')) {
if ($output->isVerbose()) {
$io->comment('Warming up optional cache...');
}
$this->warmupOptionals($realCacheDir);
}
}

if (!$fs->exists($warmupDir.'/'.$containerDir)) {
Expand Down Expand Up @@ -219,7 +219,7 @@ private function isNfs(string $dir): bool
return false;
}

private function warmup(string $warmupDir, string $realBuildDir, bool $enableOptionalWarmers = true)
private function warmup(string $warmupDir, string $realBuildDir): void
{
// create a temporary kernel
$kernel = $this->getApplication()->getKernel();
Expand All @@ -228,18 +228,6 @@ private function warmup(string $warmupDir, string $realBuildDir, bool $enableOpt
}
$kernel->reboot($warmupDir);

// warmup temporary dir
if ($enableOptionalWarmers) {
$warmer = $kernel->getContainer()->get('cache_warmer');
// non optional warmers already ran during container compilation
$warmer->enableOnlyOptionalWarmers();
$preload = (array) $warmer->warmUp($warmupDir);

if ($preload && file_exists($preloadFile = $warmupDir.'/'.$kernel->getContainer()->getParameter('kernel.container_class').'.preload.php')) {
Preloader::append($preloadFile, $preload);
}
}

// fix references to cached files with the real cache directory name
$search = [$warmupDir, str_replace('\\', '\\\\', $warmupDir)];
$replace = str_replace('\\', '/', $realBuildDir);
Expand All @@ -250,4 +238,17 @@ private function warmup(string $warmupDir, string $realBuildDir, bool $enableOpt
}
}
}

private function warmupOptionals(string $realCacheDir): void
{
$kernel = $this->getApplication()->getKernel();

Check failure on line 244 in src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php

View workflow job for this annotation

GitHub Actions / Psalm

UndefinedMethod

src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php:244:44: UndefinedMethod: Method Symfony\Component\Console\Application::getKernel does not exist (see https://psalm.dev/022)
$warmer = $kernel->getContainer()->get('cache_warmer');
// non optional warmers already ran during container compilation
$warmer->enableOnlyOptionalWarmers();
$preload = (array) $warmer->warmUp($realCacheDir);

if ($preload && file_exists($preloadFile = $realCacheDir.'/'.$kernel->getContainer()->getParameter('kernel.container_class').'.preload.php')) {
Preloader::append($preloadFile, $preload);
}
}
}

0 comments on commit 81e1db5

Please sign in to comment.