Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 81a5057

Browse files
bug #23063 [Cache] Fix extensibility of TagAwareAdapter::TAGS_PREFIX (wucdbm)
This PR was submitted for the 3.3 branch but it was merged into the 3.2 branch instead (closes #23063). Discussion ---------- [Cache] Fix extensibility of TagAwareAdapter::TAGS_PREFIX | Q | A | ------------- | --- | Branch? | 3.3 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | | License | MIT | Doc PR | It seems that when MemcachedAdapter is used with TagAwareAdapter, it fails to fetch items, even though I thoroughly tested fetching items with the exact same keys under the same namespace. Edit: Just to clarify, `CacheItem::isHit()` always returned `false`. This is what I meant with the above. Turns out the issue lies in `const TAGS_PREFIX = "\0tags\0";` for unknown to me reasons. Hardcoding that to `'__tags__'` in my project did the trick and I've been using it for a couple of days now and it seems fine. The reason I had to completely copy/paste this file in my local project is `self::` instead of `static::` usage. I am not sure whether that is a mistake or is done on purpose, but in order to have this work for me I need to be able to override that constant. Going with static:: seems like a good solution to me, then I can set whatever prefix I need for the tags. PS: Not exactly sure what to do with tests. Any help would be appreciated. Commits ------- 405f64b [Cache] MemcachedAdapter not working with TagAwareAdapter
2 parents 12f5636 + 405f64b commit 81a5057

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

src/Symfony/Component/Cache/Adapter/AbstractAdapter.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,9 @@ private function generateItems($items, &$keys)
426426

427427
try {
428428
foreach ($items as $id => $value) {
429+
if (!isset($keys[$id])) {
430+
$id = key($keys);
431+
}
429432
$key = $keys[$id];
430433
unset($keys[$id]);
431434
yield $key => $f($key, $value, true);

src/Symfony/Component/Cache/Adapter/TagAwareAdapter.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ private function generateItems($items, array $tagKeys)
261261

262262
foreach ($items as $key => $item) {
263263
if (!$tagKeys) {
264-
yield $key => isset($invalidKeys[self::TAGS_PREFIX.$key]) ? $f($key, null, $item) : $item;
264+
yield $key => isset($invalidKeys[static::TAGS_PREFIX.$key]) ? $f($key, null, $item) : $item;
265265
continue;
266266
}
267267
if (!isset($tagKeys[$key])) {
@@ -287,7 +287,7 @@ private function generateItems($items, array $tagKeys)
287287
$itemTags = $tagVersions = $tagKeys = null;
288288

289289
foreach ($bufferedItems as $key => $item) {
290-
yield $key => isset($invalidKeys[self::TAGS_PREFIX.$key]) ? $f($key, null, $item) : $item;
290+
yield $key => isset($invalidKeys[static::TAGS_PREFIX.$key]) ? $f($key, null, $item) : $item;
291291
}
292292
$bufferedItems = null;
293293
}

0 commit comments

Comments
 (0)