]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PGBackend: fix large_omap_objects checking 21150/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Sat, 31 Mar 2018 01:48:23 +0000 (09:48 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Sat, 31 Mar 2018 02:30:05 +0000 (10:30 +0800)
We should avoid creating **new** objects into shard's map,
because replicas may get divergent view of objects they should
have with each other, though the chance is rare.

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/osd/PGBackend.cc

index da87d2fd66b39016db59a6d1264c47c1f9b908a9..c332c672af3a79c70a0b05279d65228e1803faea 100644 (file)
@@ -1121,7 +1121,10 @@ void PGBackend::be_large_omap_check(const map<pg_shard_t,ScrubMap*> &maps,
   // Iterate through objects and check large omap object flag
   for (const auto& k : master_set) {
     for (const auto& map : maps) {
-      ScrubMap::object& obj = map.second->objects[k];
+      auto it = map.second->objects.find(k);
+      if (it == map.second->objects.end())
+        continue;
+      ScrubMap::object& obj = it->second;
       if (obj.large_omap_object_found) {
         large_omap_objects++;
         warnstream << "Large omap object found. Object: " << k << " Key count: "