From a8dea95119c8c2c097f6d7421cd65bbb19ba4adf Mon Sep 17 00:00:00 2001 From: Adam Katz Date: Fri, 17 Feb 2023 16:58:52 +0300 Subject: [PATCH] [Messenger][Cache] fixed CallbackInterface support in async expiration handler --- .../Component/Cache/Messenger/EarlyExpirationHandler.php | 3 ++- .../Cache/Tests/Messenger/EarlyExpirationHandlerTest.php | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/Cache/Messenger/EarlyExpirationHandler.php b/src/Symfony/Component/Cache/Messenger/EarlyExpirationHandler.php index 1f0bd565ce5ea..9e53f5d2fd654 100644 --- a/src/Symfony/Component/Cache/Messenger/EarlyExpirationHandler.php +++ b/src/Symfony/Component/Cache/Messenger/EarlyExpirationHandler.php @@ -73,7 +73,8 @@ function (CacheItem $item, float $startTime) { $startTime = microtime(true); $pool = $message->findPool($this->reverseContainer); $callback = $message->findCallback($this->reverseContainer); - $value = $callback($item); + $save = true; + $value = $callback($item, $save); $setMetadata($item, $startTime); $pool->save($item->set($value)); } diff --git a/src/Symfony/Component/Cache/Tests/Messenger/EarlyExpirationHandlerTest.php b/src/Symfony/Component/Cache/Tests/Messenger/EarlyExpirationHandlerTest.php index f42bca5525aff..8c63224491266 100644 --- a/src/Symfony/Component/Cache/Tests/Messenger/EarlyExpirationHandlerTest.php +++ b/src/Symfony/Component/Cache/Tests/Messenger/EarlyExpirationHandlerTest.php @@ -12,14 +12,15 @@ namespace Symfony\Component\Cache\Tests\Messenger; use PHPUnit\Framework\TestCase; +use Psr\Cache\CacheItemInterface; use Symfony\Component\Cache\Adapter\FilesystemAdapter; -use Symfony\Component\Cache\CacheItem; use Symfony\Component\Cache\Messenger\EarlyExpirationHandler; use Symfony\Component\Cache\Messenger\EarlyExpirationMessage; use Symfony\Component\DependencyInjection\Container; use Symfony\Component\DependencyInjection\ReverseContainer; use Symfony\Component\DependencyInjection\ServiceLocator; use Symfony\Component\Filesystem\Filesystem; +use Symfony\Contracts\Cache\CallbackInterface; /** * @requires function Symfony\Component\DependencyInjection\ReverseContainer::__construct @@ -40,8 +41,8 @@ public function testHandle() $item = $pool->getItem('foo'); $item->set(234); - $computationService = new class() { - public function __invoke(CacheItem $item) + $computationService = new class() implements CallbackInterface { + public function __invoke(CacheItemInterface $item, bool &$save) { usleep(30000); $item->expiresAfter(3600);