]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: use a random nonce in Messenger
authorJohn Spray <john.spray@redhat.com>
Mon, 19 Sep 2016 14:22:01 +0000 (15:22 +0100)
committerJohn Spray <john.spray@redhat.com>
Mon, 19 Sep 2016 19:31:36 +0000 (20:31 +0100)
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 <john.spray@redhat.com>
src/ceph_mds.cc

index 40eada92729d2bcc463f429ed88e60b41aef662a..8daf4d7363256e765e994e03bfef32ded998b696 100644 (file)
@@ -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);