From 5ba612882750dae6f0b057c660cd283293a18a3f Mon Sep 17 00:00:00 2001 From: John Spray Date: Mon, 19 Sep 2016 15:22:01 +0100 Subject: [PATCH] mds: use a random nonce in Messenger The MDS is a client to the OSDs, and responds to blacklists by respawning itself. Usually respawns of a daemonized process result in a PID change, but it's not guaranteed, and it's definitely not the case when someone runs in foreground (e.g. teuthology). Using a random nonce makes sure we won't match against an existing blacklist entry from a failed instance of an MDS daemon with the same name as us. Related to: http://tracker.ceph.com/issues/17236 Signed-off-by: John Spray --- src/ceph_mds.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ceph_mds.cc b/src/ceph_mds.cc index 40eada92729d2..8daf4d7363256 100644 --- a/src/ceph_mds.cc +++ b/src/ceph_mds.cc @@ -136,9 +136,12 @@ int main(int argc, const char **argv) "MDS names may not start with a numeric digit." << dendl; } + uint64_t nonce = 0; + get_random_bytes((char*)&nonce, sizeof(nonce)); + Messenger *msgr = Messenger::create(g_ceph_context, g_conf->ms_type, entity_name_t::MDS(-1), "mds", - getpid(), 0, Messenger::HAS_MANY_CONNECTIONS); + nonce, 0, Messenger::HAS_MANY_CONNECTIONS); if (!msgr) exit(1); msgr->set_cluster_protocol(CEPH_MDS_PROTOCOL); -- 2.39.5