]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PrimaryLogPG: handle object !exists in handle_watch_timeout 26591/head
authorSage Weil <sage@redhat.com>
Fri, 22 Feb 2019 14:56:16 +0000 (08:56 -0600)
committerSage Weil <sage@redhat.com>
Fri, 22 Feb 2019 14:56:16 +0000 (08:56 -0600)
- 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>
src/osd/PrimaryLogPG.cc

index 3863ee21afdcecefe1c10736717dcd6d961c1e8d..b588cba9cc85d24cf3c5af73e8e4d3329602fcd8 100644 (file)
@@ -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()