From c42274681a7f608518b7076b9e02a670ddf6f64e Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Tue, 14 Aug 2018 13:06:50 -0400 Subject: [PATCH] rgw: return errors from RGWInitBucketShardSyncStatusCoroutine return ENOENT so caller can detect whether sync is stopped Signed-off-by: Casey Bodley (cherry picked from commit 72ac0aa1bb5bdffb06b1df8469206b3967a59aa0) --- src/rgw/rgw_data_sync.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/rgw/rgw_data_sync.cc b/src/rgw/rgw_data_sync.cc index 27b8fe41fae3e..81e0319302f5c 100644 --- a/src/rgw/rgw_data_sync.cc +++ b/src/rgw/rgw_data_sync.cc @@ -1,3 +1,6 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + #include #include "common/ceph_json.h" @@ -1993,6 +1996,12 @@ public: call(new RGWSimpleRadosWriteAttrsCR(sync_env->async_rados, store, obj, attrs)); } } + if (info.syncstopped) { + retcode = -ENOENT; + } + if (retcode < 0) { + return set_cr_error(retcode); + } return set_cr_done(); } return 0; @@ -3216,6 +3225,12 @@ int RGWRunBucketSyncCoroutine::operate() if (sync_status.state == rgw_bucket_shard_sync_info::StateInit) { yield call(new RGWInitBucketShardSyncStatusCoroutine(sync_env, bs, sync_status)); + if (retcode == -ENOENT) { + tn->log(0, "bucket sync disabled"); + lease_cr->go_down(); + drain_all(); + return set_cr_done(); + } if (retcode < 0) { tn->log(0, SSTR("ERROR: init sync on bucket failed, retcode=" << retcode)); lease_cr->go_down(); -- 2.39.5