]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
msg/Policy: make stateless_server default to anon (again)
authorSage Weil <sage@redhat.com>
Fri, 28 Feb 2020 20:52:02 +0000 (14:52 -0600)
committerKefu Chai <kchai@redhat.com>
Sun, 1 Mar 2020 12:34:10 +0000 (20:34 +0800)
commita403e233edcf47eec78d5907b8685f17067bad5f
treeb924d1e788d2a9647b76f79d06ab21c9ebb0eb38
parente05a07ded99ce0ee40ed60a498326e749b2c1b4d
msg/Policy: make stateless_server default to anon (again)

Midway through the octopus cycle, we made stateless server more stateless
in the sense that it would not register incoming client connections.  And,
in so doing, it would not enforce that client connections came from
unique addresses, by closing an existing connection from the same addr
when a new connection was accepted.

This turned out to cause out of order OSD ops because the OSD needed that
behavior.  See https://tracker.ceph.com/issues/42328.  We fixed that by
reverting to the old behavior for all but monitor connections, where we
needed it, in 507d213cc453ed86ab38619590f710f33245c652.

This, in turn, breaks most OSD <-> OSD communication (and probably lots
of other things) with cephadm, because we make entity_addr_t unique with
a nonce that is populated by getpid()... and the containerized daemons
all have pid 1.  When we finally merged the follow-on fixes for the change
above cephadm OSDs can't ping each other.

In my view, the 'anon' connection handling is a good idea in the general
case.  So, let's adjust our fix for #42328 so that it is only the OSD
client-side interface that registers client connections and makes them
unique.

Fixes: https://tracker.ceph.com/issues/44358
Signed-off-by: Sage Weil <sage@redhat.com>
src/ceph_mon.cc
src/ceph_osd.cc
src/msg/Policy.h