From 571a13255aff4ca072ff88bb4ce54da086fbad86 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Fri, 3 Jun 2016 02:03:13 -0700 Subject: [PATCH] rgw: stop bucket lease only after draining object sync operations Fixes: http://tracker.ceph.com/issues/16143 Signed-off-by: Yehuda Sadeh (cherry picked from commit be6ad9a76c3008ea25a737c0de718faab8fca611) --- src/rgw/rgw_data_sync.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/rgw/rgw_data_sync.cc b/src/rgw/rgw_data_sync.cc index 434e0f37014a0..fad1121814c7e 100644 --- a/src/rgw/rgw_data_sync.cc +++ b/src/rgw/rgw_data_sync.cc @@ -2332,6 +2332,7 @@ int RGWBucketShardIncrementalSyncCR::operate() inc_marker.position, &list_result)); if (retcode < 0 && retcode != -ENOENT) { /* wait for all operations to complete */ + drain_all_but(1); lease_cr->go_down(); drain_all(); return set_cr_error(retcode); @@ -2436,11 +2437,13 @@ int RGWBucketShardIncrementalSyncCR::operate() } if (retcode < 0) { ldout(sync_env->cct, 0) << "ERROR: marker_tracker->flush() returned retcode=" << retcode << dendl; + drain_all_but(1); lease_cr->go_down(); drain_all(); return set_cr_error(retcode); } + drain_all_but(1); lease_cr->go_down(); /* wait for all operations to complete */ drain_all(); -- 2.39.5