From: Yehuda Sadeh Date: Wed, 15 Dec 2010 23:37:32 +0000 (-0800) Subject: osd: timed out watcher is added to unconnected map X-Git-Tag: v0.25~447 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1e490eff77205a8277412ad4142882e72db0a8cb;p=ceph.git osd: timed out watcher is added to unconnected map --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index ca0366527b87..a8b9f5ca3e5c 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1753,8 +1753,13 @@ void OSD::handle_notify_timeout(void *_notif) notif_iter != notif->watchers.end(); ++notif_iter) { map::iterator witer = obc->watchers.find(notif_iter->first); - if (witer != obc->watchers.end()) + if (witer != obc->watchers.end()) { + watch_info_t& w = obc->obs.oi.watchers[notif_iter->first]; obc->watchers.erase(witer); // FIXME: hmm? notify timeout may be different than watch timeout? + utime_t expire = g_clock.now(); + expire += w.timeout_seconds; + obc->unconnected_watchers[notif_iter->first] = expire; + } } obc->lock.Unlock(); watch_lock.Unlock(); /* put_object_context takes osd->lock */