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;