]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: don't store empty chains in gc 11969/head
authorYehuda Sadeh <yehuda@redhat.com>
Mon, 14 Nov 2016 18:22:03 +0000 (10:22 -0800)
committerYehuda Sadeh <yehuda@redhat.com>
Mon, 14 Nov 2016 18:22:03 +0000 (10:22 -0800)
Fixes: http://tracker.ceph.com/issues/17897
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/cls/rgw/cls_rgw_types.h
src/rgw/rgw_rados.cc

index 61209e4b6d12fbc2c86caa33f7c8c8baa6ec6a2f..144c5af203f909491d2714953613397e1fdb7415 100644 (file)
@@ -904,6 +904,10 @@ struct cls_rgw_obj_chain {
   static void generate_test_instances(list<cls_rgw_obj_chain*>& ls) {
     ls.push_back(new cls_rgw_obj_chain);
   }
+
+  bool empty() {
+    return objs.empty();
+  }
 };
 WRITE_CLASS_ENCODER(cls_rgw_obj_chain)
 
index 352c87e7b7fc2cde36feb508b4fad6e044203985..91c23c81bbe85d91e2dbebbab321fc042c5fd96b 100644 (file)
@@ -7821,6 +7821,10 @@ int RGWRados::Object::complete_atomic_modification()
   cls_rgw_obj_chain chain;
   store->update_gc_chain(obj, state->manifest, &chain);
 
+  if (chain.empty()) {
+    return 0;
+  }
+
   string tag = state->obj_tag.to_str();
   return store->gc->send_chain(chain, tag, false);  // do it async
 }