From cf531cdd5e655a033f47e04b7dda81435a90271d Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Tue, 8 Sep 2020 15:27:55 -0400 Subject: [PATCH] rgw: ObjectCache::put() clears stale objv if an existing object is cached with an object version, but it's mutated without updating that version number, clear the OBJV flag so that later cache reads asking for an object version result in a miss and re-read the version from the osd Fixes: https://tracker.ceph.com/issues/47306 Signed-off-by: Casey Bodley --- src/rgw/rgw_cache.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/rgw/rgw_cache.cc b/src/rgw/rgw_cache.cc index 90a608d1bf1..6908e7f9d25 100644 --- a/src/rgw/rgw_cache.cc +++ b/src/rgw/rgw_cache.cc @@ -176,6 +176,9 @@ void ObjectCache::put(const string& name, ObjectCacheInfo& info, rgw_cache_entry cache_info->gen = entry.gen; } + // put() must include the latest version if we're going to keep caching it + target.flags &= ~CACHE_FLAG_OBJV; + target.flags |= info.flags; if (info.flags & CACHE_FLAG_META) -- 2.47.3