From: lichaochao Date: Wed, 27 Sep 2023 10:06:34 +0000 (+0200) Subject: rgw: fix unwatch crash at radosgw startup X-Git-Tag: v19.0.0~372^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=acd43489038495899c1fc4f1e719b19e8b842ca1;p=ceph-ci.git rgw: fix unwatch crash at radosgw startup During radosgw initialization, if there is an exception in init_watch that causes the watcher registration to fail, When finalize_watch is executed, a crash occurs due to unregister an unregistered watch. Fixes: https://tracker.ceph.com/issues/60094 Signed-off-by: lichaochao --- diff --git a/src/rgw/services/svc_notify.cc b/src/rgw/services/svc_notify.cc index f4319516517..43f84ed0a4f 100644 --- a/src/rgw/services/svc_notify.cc +++ b/src/rgw/services/svc_notify.cc @@ -253,7 +253,8 @@ void RGWSI_Notify::finalize_watch() { for (int i = 0; i < num_watchers; i++) { RGWWatcher *watcher = watchers[i]; - watcher->unregister_watch(); + if (watchers_set.find(i) != watchers_set.end()) + watcher->unregister_watch(); delete watcher; }