From: Sage Weil Date: Fri, 22 Feb 2019 14:56:16 +0000 (-0600) Subject: osd/PrimaryLogPG: handle object !exists in handle_watch_timeout X-Git-Tag: v14.1.1~154^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bdf2d1b97308835bec038b10663bc438da013e9d;p=ceph.git osd/PrimaryLogPG: handle object !exists in handle_watch_timeout - watch on object - watch timeout queued - rados op deletes object - handle_watch_timeout tries to delete it again Fixes: http://tracker.ceph.com/issues/38432 Signed-off-by: Sage Weil --- diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index 3863ee21afd..b588cba9cc8 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -10911,6 +10911,10 @@ void PrimaryLogPG::handle_watch_timeout(WatchRef watch) dout(10) << "handle_watch_timeout not active, no-op" << dendl; return; } + if (!obc->obs.exists) { + dout(10) << __func__ << " object " << obc->obs.oi.soid << " dne" << dendl; + return; + } if (is_degraded_or_backfilling_object(obc->obs.oi.soid)) { callbacks_for_degraded_object[obc->obs.oi.soid].push_back( watch->get_delayed_cb()