From: Yehuda Sadeh Date: Mon, 14 Nov 2016 18:22:03 +0000 (-0800) Subject: rgw: don't store empty chains in gc X-Git-Tag: v10.2.6~30^2~13^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F12174%2Fhead;p=ceph.git rgw: don't store empty chains in gc Fixes: http://tracker.ceph.com/issues/17897 Signed-off-by: Yehuda Sadeh (cherry picked from commit 7c8f1b9edc921711fa30345bbecea2dcd5de1229) --- diff --git a/src/cls/rgw/cls_rgw_types.h b/src/cls/rgw/cls_rgw_types.h index cf143ce92cc0..8409f1974c53 100644 --- a/src/cls/rgw/cls_rgw_types.h +++ b/src/cls/rgw/cls_rgw_types.h @@ -886,6 +886,10 @@ struct cls_rgw_obj_chain { static void generate_test_instances(list& ls) { ls.push_back(new cls_rgw_obj_chain); } + + bool empty() { + return objs.empty(); + } }; WRITE_CLASS_ENCODER(cls_rgw_obj_chain) diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 134e7e56ea04..a95a2e244a1d 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -7447,6 +7447,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(); int ret = store->gc->send_chain(chain, tag, false); // do it async