]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osdc/Objecter: distinguish between multiple notify completions 6136/head
authorSage Weil <sage@redhat.com>
Thu, 1 Oct 2015 18:50:34 +0000 (14:50 -0400)
committerSage Weil <sage@redhat.com>
Thu, 1 Oct 2015 18:50:34 +0000 (14:50 -0400)
commite86d033854c76f344c678e92016c4e5c5e0385e2
tree5e09248ab3f3a5206bf547d9c6fcca8a24ec4cca
parent049ea702b9bf4a8a62ae2770d9ba55c0730b3eef
osdc/Objecter: distinguish between multiple notify completions

We may send a notify to the cluster multiple times due to OSDMap
changes.  In some cases, earlier notify attempts may complete with
an error, while later attempts succeed.  We need to only pay
attention to the most-recently send notify's completion.

Do this by making note of the notify_id in the initial ACK (only
present when talking to newer OSDs).  When we get a notify
completion, match it against our expected notify_id (if we have
one) or else discard it.

This is important because in some cases an early notify completion
may be an error while a later one succeeds.

Note that if we are talking to an old cluster we will simply not record a
notify_id and our behavior will be the same as before (we will trust any
notify completion we get).

Fixes: #13114
Signed-off-by: Sage Weil <sage@redhat.com>
src/osdc/Objecter.cc
src/osdc/Objecter.h