From 0ff5a6e777eb0074cbf1f89c1514e21d9c3852c5 Mon Sep 17 00:00:00 2001 From: Yuval Lifshitz Date: Mon, 10 Jan 2022 18:55:50 +0200 Subject: [PATCH] rgw: fix dynamic reshard happening during user stats sync this is a regression caused by the following commit: https://github.com/ceph/ceph/commit/72d1a363263cf707d022ee756122236ba175cda2 to verify use the following instructions: https://gist.github.com/yuvalif/d526c0a3a4c5b245b9e951a6c5a10517 Signed-off-by: Yuval Lifshitz --- src/rgw/rgw_bucket.h | 2 +- src/rgw/rgw_sal_rados.cc | 4 ++-- src/rgw/services/svc_bi_rados.cc | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/rgw/rgw_bucket.h b/src/rgw/rgw_bucket.h index a2797b47d0c..0bc24db7e40 100644 --- a/src/rgw/rgw_bucket.h +++ b/src/rgw/rgw_bucket.h @@ -705,7 +705,7 @@ public: int sync_user_stats(const DoutPrefixProvider *dpp, const rgw_user& user_id, const RGWBucketInfo& bucket_info, optional_yield y, - RGWBucketEnt* pent = nullptr); + RGWBucketEnt* pent); /* bucket sync */ int get_sync_policy_handler(std::optional zone, diff --git a/src/rgw/rgw_sal_rados.cc b/src/rgw/rgw_sal_rados.cc index d0ba542c990..97f64a0acbf 100644 --- a/src/rgw/rgw_sal_rados.cc +++ b/src/rgw/rgw_sal_rados.cc @@ -403,7 +403,7 @@ int RadosBucket::remove_bucket(const DoutPrefixProvider* dpp, (void) store->getRados()->get_lc()->remove_bucket_config( this, get_attrs()); - ret = store->ctl()->bucket->sync_user_stats(dpp, info.owner, info, y); + ret = store->ctl()->bucket->sync_user_stats(dpp, info.owner, info, y, nullptr); if (ret < 0) { ldout(store->ctx(), 1) << "WARNING: failed sync user stats before bucket delete. ret=" << ret << dendl; } @@ -627,7 +627,7 @@ int RadosBucket::read_stats_async(const DoutPrefixProvider *dpp, int shard_id, R int RadosBucket::sync_user_stats(const DoutPrefixProvider *dpp, optional_yield y) { - return store->ctl()->bucket->sync_user_stats(dpp, owner->get_id(), info, y); + return store->ctl()->bucket->sync_user_stats(dpp, owner->get_id(), info, y, &ent); } int RadosBucket::update_container_stats(const DoutPrefixProvider* dpp) diff --git a/src/rgw/services/svc_bi_rados.cc b/src/rgw/services/svc_bi_rados.cc index 950ded02f63..10d7720875f 100644 --- a/src/rgw/services/svc_bi_rados.cc +++ b/src/rgw/services/svc_bi_rados.cc @@ -382,6 +382,10 @@ int RGWSI_BucketIndex_RADOS::read_stats(const DoutPrefixProvider *dpp, return r; } + result->count = 0; + result->size = 0; + result->size_rounded = 0; + auto hiter = headers.begin(); for (; hiter != headers.end(); ++hiter) { RGWObjCategory category = RGWObjCategory::Main; -- 2.39.5