From: Matt Benjamin Date: Wed, 30 Sep 2020 19:13:04 +0000 (-0400) Subject: rgw_file: avoid long-ish delay on shutdown X-Git-Tag: v17.0.0~973^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=805f74956489e3158437acc1c3c12f267221843e;p=ceph-ci.git rgw_file: avoid long-ish delay on shutdown Normal shutdown was likely to be delayed a substantial fraction of rgw_nfs_namespace_expire_secs due to an ill-advised use of this_thread::sleep_for. Fixes: https://tracker.ceph.com/issues/47710 Signed-off-by: Matt Benjamin --- diff --git a/src/rgw/librgw.cc b/src/rgw/librgw.cc index bfad9c04d78..25f81690ca5 100644 --- a/src/rgw/librgw.cc +++ b/src/rgw/librgw.cc @@ -129,8 +129,8 @@ namespace rgw { if (cur_gen != gen) goto restart; /* invalidated */ } + cv.wait_for(uniq, std::chrono::seconds(delay_s)); uniq.unlock(); - std::this_thread::sleep_for(std::chrono::seconds(delay_s)); } } diff --git a/src/rgw/rgw_lib_frontend.h b/src/rgw/rgw_lib_frontend.h index 91ccc15df95..0f2276f4896 100644 --- a/src/rgw/rgw_lib_frontend.h +++ b/src/rgw/rgw_lib_frontend.h @@ -14,6 +14,7 @@ namespace rgw { class RGWLibProcess : public RGWProcess { RGWAccessKey access_key; std::mutex mtx; + std::condition_variable cv; int gen; bool shutdown; @@ -36,6 +37,7 @@ namespace rgw { for (const auto& fs: mounted_fs) { fs.second->stop(); } + cv.notify_all(); } void register_fs(RGWLibFS* fs) {