]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osdc/Objecter: fix pool dne corner case 14901/head
authorSage Weil <sage@redhat.com>
Mon, 1 May 2017 20:10:44 +0000 (15:10 -0500)
committerSage Weil <sage@redhat.com>
Mon, 1 May 2017 20:10:44 +0000 (15:10 -0500)
commitd60c1c40ce7a4eb7806b748b0738de39c11d6781
treee88e71d19b9bd41032f94b33b05f7600a390c64d
parent56baf955ad4f7c9a8d957bba8feb24819d2ecf37
osdc/Objecter: fix pool dne corner case

We have a request that is queued before a pool exists, there is one
epoch where it exists, and then the pool disappears again.  The two maps
are processed at the same time.  For the first we set needs_resend, map to
an osd, and remove from the homeless sessin.  For the second, the pool
dne, we set osd back to -1, and send a map check request.  Finally,
handle_osd_maps scans need_resend, sees the pool dne, and removes from
need_resend.  The difference from the "usual" case is that we are neither
on the need_resend list nor on the homeless session.

Fix this by concluding immediately that the pool existed (briefly) and
then no longer exists.

Fixes: http://tracker.ceph.com/issues/19552
Signed-off-by: Sage Weil <sage@redhat.com>
src/osdc/Objecter.cc
src/osdc/Objecter.h