diff --git a/objectstore/BackendRados.cpp b/objectstore/BackendRados.cpp index 0d08db6bb35af772cfa302a08275590121b01138..6308f7ab56d5930637f30e124693367420f30acd 100644 --- a/objectstore/BackendRados.cpp +++ b/objectstore/BackendRados.cpp @@ -212,6 +212,7 @@ BackendRados::LockWatcher::LockWatcher(librados::IoCtx& context, const std::stri void BackendRados::LockWatcher::handle_error(uint64_t cookie, int err) { threading::MutexLocker ml(m_promiseMutex); + if (m_promiseSet) return; m_promise.set_value(); TIMESTAMPEDPRINT("Handled notify"); m_promiseSet = true; @@ -219,6 +220,7 @@ void BackendRados::LockWatcher::handle_error(uint64_t cookie, int err) { void BackendRados::LockWatcher::handle_notify(uint64_t notify_id, uint64_t cookie, uint64_t notifier_id, librados::bufferlist& bl) { threading::MutexLocker ml(m_promiseMutex); + if (m_promiseSet) return; m_promise.set_value(); TIMESTAMPEDPRINT("Handled notify"); m_promiseSet = true;