]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PrimaryLogPG: handle object !exists in handle_watch_timeout 26709/head
authorSage Weil <sage@redhat.com>
Fri, 22 Feb 2019 14:56:16 +0000 (08:56 -0600)
committerPrashant D <pdhange@redhat.com>
Mon, 4 Mar 2019 23:38:37 +0000 (18:38 -0500)
- 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 <sage@redhat.com>
(cherry picked from commit bdf2d1b97308835bec038b10663bc438da013e9d)

src/osd/PrimaryLogPG.cc

index 97ce82aa71db8769ce7a4594975db214354b09c7..19e5f3703cf5182a835f3dcdcb3e485509f01abf 100644 (file)
@@ -10746,6 +10746,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()