From a74e8882ae500b3e6f1d4bf1d7bb2d260e4261f4 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Mon, 7 May 2018 10:23:43 -0700 Subject: [PATCH] librados: fix potential race condition if notify immediately fails Fixes: http://tracker.ceph.com/issues/23966 Signed-off-by: Jason Dillaman --- src/librados/IoCtxImpl.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/librados/IoCtxImpl.cc b/src/librados/IoCtxImpl.cc index 668eb2f7bd1103..28d2a4f429ac18 100644 --- a/src/librados/IoCtxImpl.cc +++ b/src/librados/IoCtxImpl.cc @@ -1828,7 +1828,6 @@ int librados::IoCtxImpl::notify(const object_t& oid, bufferlist& bl, Context *notify_finish = new C_notify_Finish(client->cct, ¬ify_finish_cond, objecter, linger_op, preply_bl, preply_buf, preply_buf_len); - (void) notify_finish; uint32_t timeout = notify_timeout; if (timeout_ms) @@ -1860,6 +1859,7 @@ int librados::IoCtxImpl::notify(const object_t& oid, bufferlist& bl, } else { ldout(client->cct, 10) << __func__ << " failed to initiate notify, r = " << r << dendl; + notify_finish_cond.wait(); } objecter->linger_cancel(linger_op);