From: Casey Bodley Date: Wed, 10 Jun 2020 14:53:55 +0000 (-0400) Subject: rgw: stop realm reloader before store shutdown X-Git-Tag: v14.2.11~45^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=eb6dd881df775da151e33271aa3917112571d72c;p=ceph.git rgw: stop realm reloader before store shutdown otherwise the two could race to destroy the store Fixes: https://tracker.ceph.com/issues/45969 Signed-off-by: Casey Bodley (cherry picked from commit 7787dfb4926dcc2baa7530b620ae8cfccf90bc30) Conflicts: src/rgw/rgw_main.cc - RGWRealmWatcher realm_watcher(...) line looks different in nautilus --- diff --git a/src/rgw/rgw_main.cc b/src/rgw/rgw_main.cc index 15174b1b9da63..44609741ed742 100644 --- a/src/rgw/rgw_main.cc +++ b/src/rgw/rgw_main.cc @@ -565,10 +565,11 @@ int main(int argc, const char **argv) // add a watcher to respond to realm configuration changes RGWPeriodPusher pusher(store); RGWFrontendPauser pauser(fes, implicit_tenant_context, &pusher); - RGWRealmReloader reloader(store, service_map_meta, &pauser); + std::optional reloader(std::in_place, store, + service_map_meta, &pauser); RGWRealmWatcher realm_watcher(g_ceph_context, store->svc.zone->get_realm()); - realm_watcher.add_watcher(RGWRealmNotify::Reload, reloader); + realm_watcher.add_watcher(RGWRealmNotify::Reload, *reloader); realm_watcher.add_watcher(RGWRealmNotify::ZonesNeedPeriod, pusher); #if defined(HAVE_SYS_PRCTL_H) @@ -581,6 +582,8 @@ int main(int argc, const char **argv) derr << "shutting down" << dendl; + reloader.reset(); // stop the realm reloader + for (list::iterator liter = fes.begin(); liter != fes.end(); ++liter) { RGWFrontend *fe = *liter;