]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: ObjectCache::put() clears stale objv 37054/head
authorCasey Bodley <cbodley@redhat.com>
Tue, 8 Sep 2020 19:27:55 +0000 (15:27 -0400)
committerCasey Bodley <cbodley@redhat.com>
Tue, 8 Sep 2020 19:31:07 +0000 (15:31 -0400)
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 <cbodley@redhat.com>
src/rgw/rgw_cache.cc

index 90a608d1bf159d6e1018c941a14463245af30600..6908e7f9d252b119b03fe29b83cf4ca1def8365e 100644 (file)
@@ -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)