diff --git a/src/Symfony/Component/Cache/Tests/Adapter/ArrayAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/ArrayAdapterTest.php index ff37479cc17da..9292b1c962f04 100644 --- a/src/Symfony/Component/Cache/Tests/Adapter/ArrayAdapterTest.php +++ b/src/Symfony/Component/Cache/Tests/Adapter/ArrayAdapterTest.php @@ -47,6 +47,10 @@ public function testGetValuesHitAndMiss() // Miss (should be present as NULL in $values) $cache->getItem('bar'); + // Fail (should be missing from $values) + $item = $cache->getItem('buz'); + $cache->save($item->set(function() {})); + $values = $cache->getValues(); $this->assertCount(2, $values); diff --git a/src/Symfony/Component/Cache/Traits/ArrayTrait.php b/src/Symfony/Component/Cache/Traits/ArrayTrait.php index 80503b754aedd..824f8659e35a2 100644 --- a/src/Symfony/Component/Cache/Traits/ArrayTrait.php +++ b/src/Symfony/Component/Cache/Traits/ArrayTrait.php @@ -145,6 +145,7 @@ private function freeze($value, $key) try { $serialized = serialize($value); } catch (\Exception $e) { + unset($this->values[$key]); $type = \is_object($value) ? \get_class($value) : \gettype($value); $message = sprintf('Failed to save key "{key}" of type %s: ', $type).$e->getMessage(); CacheItem::log($this->logger, $message, ['key' => $key, 'exception' => $e]);