From c85d06384e795ab2717868ce45f01ae93181a6be Mon Sep 17 00:00:00 2001 From: Josh Durgin Date: Mon, 21 Sep 2015 15:46:42 -0700 Subject: [PATCH] use simplifed messenger constructor for clients This is all mechanical except the calculation of the nonce, which is now always randomized for clients. Fixes: #13032 Signed-off-by: Josh Durgin (cherry picked from commit a3a8c85b79afef67681c32c57b591c0e0a87a349) Conflicts: src/ceph_fuse.cc src/ceph_syn.cc src/libcephfs.cc src/librados/RadosClient.cc src/mds/MDSUtility.cc src/mon/MonClient.cc src/test/mon/test_mon_workloadgen.cc - different arguments to Messenger::create() in firefly --- src/ceph_fuse.cc | 4 +--- src/ceph_syn.cc | 5 ++--- src/libcephfs.cc | 17 ++++------------- src/librados/RadosClient.cc | 7 +------ src/mds/MDSUtility.cc | 2 +- src/mon/MonClient.cc | 8 ++------ src/test/mon/test_mon_workloadgen.cc | 3 +-- 7 files changed, 12 insertions(+), 34 deletions(-) diff --git a/src/ceph_fuse.cc b/src/ceph_fuse.cc index 54616f60f99d3..cc97938a9aa53 100644 --- a/src/ceph_fuse.cc +++ b/src/ceph_fuse.cc @@ -120,9 +120,7 @@ int main(int argc, const char **argv, const char *envp[]) { goto out_mc_start_failed; // start up network - messenger = Messenger::create(g_ceph_context, - entity_name_t::CLIENT(), "client", - getpid()); + messenger = Messenger::create_client_messenger(g_ceph_context, "client"); messenger->set_default_policy(Messenger::Policy::lossy_client(0, 0)); messenger->set_policy(entity_name_t::TYPE_MDS, Messenger::Policy::lossless_client(0, 0)); diff --git a/src/ceph_syn.cc b/src/ceph_syn.cc index c3410aa61d413..1d10fa2e62c9e 100644 --- a/src/ceph_syn.cc +++ b/src/ceph_syn.cc @@ -65,9 +65,8 @@ int main(int argc, const char **argv, char *envp[]) cout << "ceph-syn: starting " << g_conf->num_client << " syn client(s)" << std::endl; for (int i=0; inum_client; i++) { - messengers[i] = Messenger::create(g_ceph_context, - entity_name_t(entity_name_t::TYPE_CLIENT,-1), "synclient", - i * 1000000 + getpid()); + messengers[i] = Messenger::create_client_messenger(g_ceph_context, + "synclient"); messengers[i]->bind(g_conf->public_addr); mclients[i] = new MonClient(g_ceph_context); mclients[i]->build_initial_monmap(); diff --git a/src/libcephfs.cc b/src/libcephfs.cc index 88e86ba834706..a8a32f48ee87a 100644 --- a/src/libcephfs.cc +++ b/src/libcephfs.cc @@ -34,9 +34,8 @@ struct ceph_mount_info { public: - ceph_mount_info(uint64_t msgr_nonce_, CephContext *cct_) - : msgr_nonce(msgr_nonce_), - mounted(false), + ceph_mount_info(CephContext *cct_) + : mounted(false), inited(false), client(NULL), monclient(NULL), @@ -80,7 +79,7 @@ public: goto fail; //network connection - messenger = Messenger::create(cct, entity_name_t::CLIENT(), "client", msgr_nonce); + messenger = Messenger::create_client_messenger(cct, "client"); //at last the client ret = -1002; @@ -215,7 +214,6 @@ public: } private: - uint64_t msgr_nonce; bool mounted; bool inited; Client *client; @@ -242,14 +240,7 @@ extern "C" const char *ceph_version(int *pmajor, int *pminor, int *ppatch) extern "C" int ceph_create_with_context(struct ceph_mount_info **cmount, CephContext *cct) { - uint64_t nonce = 0; - - // 6 bytes of random and 2 bytes of pid - get_random_bytes((char*)&nonce, sizeof(nonce)); - nonce &= ~0xffff; - nonce |= (uint64_t)getpid(); - - *cmount = new struct ceph_mount_info(nonce, cct); + *cmount = new struct ceph_mount_info(cct); return 0; } diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc index 74dda533e47d7..572aa2528d5d6 100644 --- a/src/librados/RadosClient.cc +++ b/src/librados/RadosClient.cc @@ -52,8 +52,6 @@ #undef dout_prefix #define dout_prefix *_dout << "librados: " -static atomic_t rados_instance; - bool librados::RadosClient::ms_get_authorizer(int dest_type, AuthAuthorizer **authorizer, bool force_new) { @@ -206,7 +204,6 @@ int librados::RadosClient::connect() common_init_finish(cct); int err; - uint64_t nonce; // already connected? if (state == CONNECTING) @@ -221,9 +218,7 @@ int librados::RadosClient::connect() goto out; err = -ENOMEM; - nonce = getpid() + (1000000 * (uint64_t)rados_instance.inc()); - messenger = Messenger::create(cct, entity_name_t::CLIENT(-1), - "radosclient", nonce); + messenger = Messenger::create_client_messenger(cct, "radosclient"); if (!messenger) goto out; diff --git a/src/mds/MDSUtility.cc b/src/mds/MDSUtility.cc index 09be280f3603b..65cf5c61dfac1 100644 --- a/src/mds/MDSUtility.cc +++ b/src/mds/MDSUtility.cc @@ -25,7 +25,7 @@ MDSUtility::MDSUtility() : waiting_for_mds_map(NULL) { monc = new MonClient(g_ceph_context); - messenger = Messenger::create(g_ceph_context, entity_name_t::CLIENT(), "mds", getpid()); + messenger = Messenger::create_client_messenger(g_ceph_context, "mds"); mdsmap = new MDSMap(); osdmap = new OSDMap(); objecter = new Objecter(g_ceph_context, messenger, monc, osdmap, lock, timer, 0, 0); diff --git a/src/mon/MonClient.cc b/src/mon/MonClient.cc index 1bbd4675fac66..0272dfdd18942 100644 --- a/src/mon/MonClient.cc +++ b/src/mon/MonClient.cc @@ -116,9 +116,7 @@ int MonClient::get_monmap_privately() bool temp_msgr = false; Messenger* smessenger = NULL; if (!messenger) { - messenger = smessenger = Messenger::create(cct, - entity_name_t::CLIENT(-1), - "temp_mon_client", getpid()); + messenger = smessenger = Messenger::create_client_messenger(cct, "temp_mon_client"); messenger->add_dispatcher_head(this); smessenger->start(); temp_msgr = true; @@ -213,9 +211,7 @@ int MonClient::ping_monitor(const string &mon_id, string *result_reply) MonClientPinger *pinger = new MonClientPinger(cct, result_reply); - Messenger *smsgr = Messenger::create(cct, - entity_name_t::CLIENT(-1), - "temp_ping_client", getpid()); + Messenger *smsgr = Messenger::create_client_messenger(cct, "temp_ping_client"); smsgr->add_dispatcher_head(pinger); smsgr->start(); diff --git a/src/test/mon/test_mon_workloadgen.cc b/src/test/mon/test_mon_workloadgen.cc index 3c6ff5627433c..d1659d6d016a0 100644 --- a/src/test/mon/test_mon_workloadgen.cc +++ b/src/test/mon/test_mon_workloadgen.cc @@ -247,8 +247,7 @@ class ClientStub : public TestStub return err; } - messenger.reset(Messenger::create(cct, entity_name_t::CLIENT(-1), - "stubclient", getpid())); + messenger.reset(Messenger::create_client_messenger(cct, "stubclient")); assert(messenger.get() != NULL); messenger->set_default_policy( -- 2.39.5