Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.6k
Open
Description
Symfony version(s) affected
7.2.3
Description
It would be expected (or was expected to us) thatcache:warm
would lead to the warming of all caches, (or, certainly all the onescache:clear
would also subsequently warm).
However usingcache:warm
, we identified that the Router cache fileurl_generating_routes.php
wasn't being generated, which lead to an issue in production in conjunction with read-only build directories.
How to reproduce
% symfony new cache_test --version="7.2.x"* Creating a new Symfony 7.2.x project with Composer [OK] Your project is now ready ...% rm -rf var/cache/dev% bin/console cache:warmup // Warming up the cache for the dev environment with debug true [OK] Cache for the "dev" environment (debug=true) was successfully warmed.% ls -lah var/cache/dev - App_KernelDevDebugContainer.php - App_KernelDevDebugContainer.php.lock - App_KernelDevDebugContainer.php.meta - App_KernelDevDebugContainer.php.meta.json - App_KernelDevDebugContainer.preload.php - App_KernelDevDebugContainer.xml - App_KernelDevDebugContainer.xml.meta - App_KernelDevDebugContainer.xml.meta.json - App_KernelDevDebugContainerCompiler.log - App_KernelDevDebugContainerDeprecations.log - ContainerXGJHbum - Symfony% bin/console cache:clear // Clearing the cache for the dev environment with debug true [OK] Cache for the "dev" environment (debug=true) was successfully cleared.% ls -lah var/cache/dev - App_KernelDevDebugContainer.php - App_KernelDevDebugContainer.php.lock - App_KernelDevDebugContainer.php.meta - App_KernelDevDebugContainer.php.meta.json - App_KernelDevDebugContainer.preload.php - App_KernelDevDebugContainer.xml - App_KernelDevDebugContainer.xml.meta - App_KernelDevDebugContainer.xml.meta.json - App_KernelDevDebugContainerCompiler.log - App_KernelDevDebugContainerDeprecations.log - ContainerXGJHbum - Symfony - url_generating_routes.php - url_generating_routes.php.meta - url_generating_routes.php.meta.json - url_matching_routes.php - url_matching_routes.php.meta - url_matching_routes.php.meta.json
Notice howcache:clear
includes 6x additional files covering the Router
Possible Solution
No response
Additional Context
- We use AWS Lambda to instantiate a Symfony/Messenger to process jobs from a AWS SQS queue
- One of the challenges we work around is the read only nature of the file system
- When investigating an issue when the app was generating a route in the Symfony/Messenger environment, around the read-only file system
Error thrown while handling message AppBundle\Message\AddToQueueMessage. Sending for retry #2 using 60 ms delay. Error: "Handling "AppBundle\Message\AddToQueueMessage" failed: Failed to send DataRecord [2053446] to destination for workflow 'XXX' in driver 'XXX' because: Cannot rename "/tmp/url_generating_routes.phpuC7Iek" to "/app/var/cache/tenant_XXX/url_generating_routes.php": rename(/tmp/url_generating_routes.phpuC7Iek,/app/var/cache/tenant_XXX/url_generating_routes.php): Read-only file system"
- Our build scripts had executed
cache:warm
all environments in the Docker build phase - On investigation it looked like the Router wasn't respecting the read-only cache, but further investigation lead to a discovery that
cache:warm
wasn't generating the files. - We've since replaced the
cache:warm
withcache:clear
in our build scripts, however I felt this issue should be opened as on the surfacecache:warm
would be expected to have also warmed the Router cache. - We set
Kernel::getCacheDir
as '/tmp/cache' andKernel::getBuildDir
as '/app/var/cache' as the the read/write and read-only cache respectfully