From b2a6f0e3e126b5c8f3a3380f464375c6a0943c1e Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Fri, 2 Jun 2017 14:42:13 -0700 Subject: [PATCH] rgw: fix index completion Was missing bucket complete op, only had the guard (bad merge?). Pass zones_trace as pointer and treat it as optional param (which it is). Signed-off-by: Yehuda Sadeh --- src/cls/rgw/cls_rgw_client.cc | 6 ++++-- src/cls/rgw/cls_rgw_client.h | 2 +- src/rgw/rgw_rados.cc | 5 +++-- src/test/cls_rgw/test_cls_rgw.cc | 3 +-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/cls/rgw/cls_rgw_client.cc b/src/cls/rgw/cls_rgw_client.cc index d3a0df776b301..13385241e3bf7 100644 --- a/src/cls/rgw/cls_rgw_client.cc +++ b/src/cls/rgw/cls_rgw_client.cc @@ -173,7 +173,7 @@ void cls_rgw_bucket_complete_op(ObjectWriteOperation& o, RGWModifyOp op, string& rgw_bucket_dir_entry_meta& dir_meta, list *remove_objs, bool log_op, uint16_t bilog_flags, - rgw_zone_set& zones_trace) + rgw_zone_set *zones_trace) { bufferlist in; @@ -187,7 +187,9 @@ void cls_rgw_bucket_complete_op(ObjectWriteOperation& o, RGWModifyOp op, string& call.bilog_flags = bilog_flags; if (remove_objs) call.remove_objs = *remove_objs; - call.zones_trace = zones_trace; + if (zones_trace) { + call.zones_trace = *zones_trace; + } ::encode(call, in); o.exec(RGW_CLASS, RGW_BUCKET_COMPLETE_OP, in); } diff --git a/src/cls/rgw/cls_rgw_client.h b/src/cls/rgw/cls_rgw_client.h index 90f0d6f31643b..7d394d6c284a8 100644 --- a/src/cls/rgw/cls_rgw_client.h +++ b/src/cls/rgw/cls_rgw_client.h @@ -320,7 +320,7 @@ void cls_rgw_bucket_complete_op(librados::ObjectWriteOperation& o, RGWModifyOp o const cls_rgw_obj_key& key, rgw_bucket_dir_entry_meta& dir_meta, list *remove_objs, bool log_op, - uint16_t bilog_op, rgw_zone_set& zones_trace); + uint16_t bilog_op, rgw_zone_set *zones_trace); void cls_rgw_remove_obj(librados::ObjectWriteOperation& o, list& keep_attr_prefixes); void cls_rgw_obj_store_pg_ver(librados::ObjectWriteOperation& o, const string& attr); diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index b86a08c427832..2866323583a04 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -3462,7 +3462,7 @@ int RGWIndexCompletionThread::process() librados::ObjectWriteOperation o; cls_rgw_guard_bucket_resharding(o, -ERR_BUSY_RESHARDING); cls_rgw_bucket_complete_op(o, c->op, c->tag, c->ver, c->key, c->dir_meta, &c->remove_objs, - c->log_op, c->bilog_op, c->zones_trace); + c->log_op, c->bilog_op, &c->zones_trace); return bs->index_ctx.operate(bs->bucket_obj, &o); }); @@ -12530,7 +12530,8 @@ int RGWRados::cls_obj_complete_op(BucketShard& bs, const rgw_obj& obj, RGWModify ver.epoch = epoch; cls_rgw_obj_key key(ent.key.name, ent.key.instance); cls_rgw_guard_bucket_resharding(o, -ERR_BUSY_RESHARDING); - + cls_rgw_bucket_complete_op(o, op, tag, ver, key, dir_meta, remove_objs, + get_zone().log_data, bilog_flags, _zones_trace); complete_op_data *arg; index_completion_manager->create_completion(obj, op, tag, ver, key, dir_meta, remove_objs, get_zone().log_data, bilog_flags, _zones_trace, &arg); diff --git a/src/test/cls_rgw/test_cls_rgw.cc b/src/test/cls_rgw/test_cls_rgw.cc index 5b345e43f93ec..6c7dbaf5235b1 100644 --- a/src/test/cls_rgw/test_cls_rgw.cc +++ b/src/test/cls_rgw/test_cls_rgw.cc @@ -102,8 +102,7 @@ void index_complete(OpMgr& mgr, librados::IoCtx& ioctx, string& oid, RGWModifyOp ver.pool = ioctx.get_id(); ver.epoch = epoch; meta.accounted_size = meta.size; - rgw_zone_set zones_trace; - cls_rgw_bucket_complete_op(*op, index_op, tag, ver, key, meta, NULL, true, 0, zones_trace); + cls_rgw_bucket_complete_op(*op, index_op, tag, ver, key, meta, nullptr, true, 0, nullptr); ASSERT_EQ(0, ioctx.operate(oid, op)); } -- 2.39.5