From 74fdef41e182e0d41d5d6501b38d712f2f109792 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Fri, 4 Dec 2015 14:36:14 -0800 Subject: [PATCH] rgw: bucket sync, don't drain_all() before shutting down lease cr Signed-off-by: Yehuda Sadeh --- src/rgw/rgw_cr_rados.cc | 1 + src/rgw/rgw_data_sync.cc | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/rgw/rgw_cr_rados.cc b/src/rgw/rgw_cr_rados.cc index bc8c34a364359..181e8e4b64ddd 100644 --- a/src/rgw/rgw_cr_rados.cc +++ b/src/rgw/rgw_cr_rados.cc @@ -534,6 +534,7 @@ int RGWAsyncRemoveObj::_send_request() int RGWContinuousLeaseCR::operate() { if (aborted) { + caller->set_sleeping(false); return set_cr_done(); } reenter(this) { diff --git a/src/rgw/rgw_data_sync.cc b/src/rgw/rgw_data_sync.cc index 78469578bd5e4..f56d78ef02d25 100644 --- a/src/rgw/rgw_data_sync.cc +++ b/src/rgw/rgw_data_sync.cc @@ -2034,6 +2034,7 @@ int RGWBucketShardFullSyncCR::operate() set_sleeping(true); yield; } + set_status("lock acquired"); list_marker = full_marker.position; marker_tracker = new RGWBucketFullSyncShardMarkerTrack(store, async_rados, status_oid, @@ -2041,10 +2042,12 @@ int RGWBucketShardFullSyncCR::operate() total_entries = full_marker.count; do { + set_status("listing remote bucket"); ldout(store->ctx(), 20) << __func__ << "(): listing bucket for full sync" << dendl; yield call(new RGWListBucketShardCR(store, http_manager, async_rados, conn, bucket_name, bucket_id, shard_id, list_marker, &list_result)); if (retcode < 0 && retcode != -ENOENT) { + set_status("failed bucket listing, going down"); yield lease_cr->go_down(); drain_all(); return set_cr_error(retcode); @@ -2077,8 +2080,9 @@ int RGWBucketShardFullSyncCR::operate() } } } while (list_result.is_truncated); + set_status("done iterating over all objects"); /* wait for all operations to complete */ - drain_all(); + drain_all_but(1); /* still need to hold lease cr */ /* update sync state to incremental */ yield { rgw_bucket_shard_sync_info sync_status; @@ -2090,6 +2094,7 @@ int RGWBucketShardFullSyncCR::operate() oid, attrs)); } yield lease_cr->go_down(); + drain_all(); if (retcode < 0) { ldout(store->ctx(), 0) << "ERROR: failed to set sync state on bucket " << bucket_name << ":" << bucket_id << ":" << shard_id << " retcode=" << retcode << dendl; -- 2.39.5