[Cache] Fix race condition in TagAwareAdapter

This commit is contained in:
Nicolas Grekas 2017-10-04 09:58:49 +02:00
parent b87a395025
commit fa24fa8a3c

View File

@ -250,19 +250,12 @@ class TagAwareAdapter implements TagAwareAdapterInterface
$f = $this->getTagsByKey;
$tagsByKey = $f($items);
$deletedTags = $this->deferred = array();
$this->deferred = array();
$tagVersions = $this->getTagVersions($tagsByKey);
$f = $this->createCacheItem;
foreach ($tagsByKey as $key => $tags) {
if ($tags) {
$this->itemsAdapter->saveDeferred($f(static::TAGS_PREFIX.$key, array_intersect_key($tagVersions, $tags), $items[$key]));
} else {
$deletedTags[] = static::TAGS_PREFIX.$key;
}
}
if ($deletedTags) {
$this->itemsAdapter->deleteItems($deletedTags);
$this->itemsAdapter->saveDeferred($f(static::TAGS_PREFIX.$key, array_intersect_key($tagVersions, $tags), $items[$key]));
}
}