From ffa595598d5b49ac2d30a16e4a2f9ae24e518a33 Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Thu, 1 Mar 2012 15:14:52 -0800 Subject: [PATCH] msgr: Remove SimpleMessenger::register_entity This function has been vestigial for a long time. Remove it and move its remaining functionality into the constructor. Update users to the new interface (this is remarkably easy and simplifies the code). Signed-off-by: Greg Farnum --- src/ceph_fuse.cc | 3 +-- src/ceph_mds.cc | 7 ++++--- src/ceph_mon.cc | 7 +++---- src/ceph_osd.cc | 13 ++++--------- src/ceph_syn.cc | 3 +-- src/libcephfs.cc | 8 +------- src/librados.cc | 3 +-- src/mds/Dumper.cc | 1 - src/mds/Resetter.cc | 1 - src/mon/MonClient.cc | 3 +-- src/msg/SimpleMessenger.cc | 32 -------------------------------- src/msg/SimpleMessenger.h | 9 ++++----- src/testmsgr.cc | 4 ++-- src/tools/common.cc | 3 +-- 14 files changed, 23 insertions(+), 74 deletions(-) diff --git a/src/ceph_fuse.cc b/src/ceph_fuse.cc index 140570c667d2d..2450eefc082d1 100644 --- a/src/ceph_fuse.cc +++ b/src/ceph_fuse.cc @@ -90,8 +90,7 @@ int main(int argc, const char **argv, const char *envp[]) { return -1; // start up network - SimpleMessenger *messenger = new SimpleMessenger(g_ceph_context); - messenger->register_entity(entity_name_t::CLIENT()); + SimpleMessenger *messenger = new SimpleMessenger(g_ceph_context, entity_name_t::CLIENT()); Client *client = new Client(messenger, &mc); if (filer_flags) { client->set_filer_flags(filer_flags); diff --git a/src/ceph_mds.cc b/src/ceph_mds.cc index 03eca5cd74270..f33b9bf007787 100644 --- a/src/ceph_mds.cc +++ b/src/ceph_mds.cc @@ -69,7 +69,8 @@ static int do_cmds_special_action(const std::string &action, const std::string &dump_file, int rank) { common_init_finish(g_ceph_context); - SimpleMessenger *messenger = new SimpleMessenger(g_ceph_context); + SimpleMessenger *messenger = new SimpleMessenger(g_ceph_context, + entity_name_t::CLIENT()); int r = messenger->bind(g_conf->public_addr, getpid()); if (r < 0) return r; @@ -229,7 +230,8 @@ int main(int argc, const char **argv) global_print_banner(); - SimpleMessenger *messenger = new SimpleMessenger(g_ceph_context); + SimpleMessenger *messenger = new SimpleMessenger(g_ceph_context, + entity_name_t::MDS(-1)); messenger->set_cluster_protocol(CEPH_MDS_PROTOCOL); int r = messenger->bind(g_conf->public_addr, getpid()); @@ -238,7 +240,6 @@ int main(int argc, const char **argv) cout << "starting " << g_conf->name << " at " << messenger->get_ms_addr() << std::endl; - messenger->register_entity(entity_name_t::MDS(-1)); uint64_t supported = CEPH_FEATURE_UID | CEPH_FEATURE_NOSRCADDR | diff --git a/src/ceph_mon.cc b/src/ceph_mon.cc index 2f9d7d4f0af5a..c604015034a69 100644 --- a/src/ceph_mon.cc +++ b/src/ceph_mon.cc @@ -366,10 +366,10 @@ int main(int argc, const char **argv) } // bind - SimpleMessenger *messenger = new SimpleMessenger(g_ceph_context); - messenger->set_cluster_protocol(CEPH_MON_PROTOCOL); - int rank = monmap.get_rank(g_conf->name.get_id()); + SimpleMessenger *messenger = new SimpleMessenger(g_ceph_context, + entity_name_t::MON(rank)); + messenger->set_cluster_protocol(CEPH_MON_PROTOCOL); global_print_banner(); @@ -384,7 +384,6 @@ int main(int argc, const char **argv) return 1; // start monitor - messenger->register_entity(entity_name_t::MON(rank)); messenger->set_default_send_priority(CEPH_MSG_PRIO_HIGH); mon = new Monitor(g_ceph_context, g_conf->name.get_id(), &store, messenger, &monmap); diff --git a/src/ceph_osd.cc b/src/ceph_osd.cc index 701662b15a334..8896d443f7381 100644 --- a/src/ceph_osd.cc +++ b/src/ceph_osd.cc @@ -300,10 +300,10 @@ int main(int argc, const char **argv) << TEXT_NORMAL << dendl; } - SimpleMessenger *client_messenger = new SimpleMessenger(g_ceph_context); - SimpleMessenger *cluster_messenger = new SimpleMessenger(g_ceph_context); - SimpleMessenger *messenger_hbin = new SimpleMessenger(g_ceph_context); - SimpleMessenger *messenger_hbout = new SimpleMessenger(g_ceph_context); + SimpleMessenger *client_messenger = new SimpleMessenger(g_ceph_context, entity_name_t::OSD(whoami)); + SimpleMessenger *cluster_messenger = new SimpleMessenger(g_ceph_context, entity_name_t::OSD(whoami)); + SimpleMessenger *messenger_hbin = new SimpleMessenger(g_ceph_context, entity_name_t::OSD(whoami)); + SimpleMessenger *messenger_hbout = new SimpleMessenger(g_ceph_context, entity_name_t::OSD(whoami)); cluster_messenger->set_cluster_protocol(CEPH_OSD_PROTOCOL); messenger_hbin->set_cluster_protocol(CEPH_OSD_PROTOCOL); messenger_hbout->set_cluster_protocol(CEPH_OSD_PROTOCOL); @@ -332,11 +332,6 @@ int main(int argc, const char **argv) "(no journal)" : g_conf->osd_journal) << std::endl; - client_messenger->register_entity(entity_name_t::OSD(whoami)); - cluster_messenger->register_entity(entity_name_t::OSD(whoami)); - messenger_hbin->register_entity(entity_name_t::OSD(whoami)); - messenger_hbout->register_entity(entity_name_t::OSD(whoami)); - Throttle client_throttler(g_conf->osd_client_message_size_cap); uint64_t supported = diff --git a/src/ceph_syn.cc b/src/ceph_syn.cc index 428724fc92c05..9d924adeaa075 100644 --- a/src/ceph_syn.cc +++ b/src/ceph_syn.cc @@ -68,8 +68,7 @@ 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] = new SimpleMessenger(g_ceph_context); - messengers[i]->register_entity(entity_name_t(entity_name_t::TYPE_CLIENT,-1)); + messengers[i] = new SimpleMessenger(g_ceph_context, entity_name_t(entity_name_t::TYPE_CLIENT,-1)); messengers[i]->bind(g_conf->public_addr, i * 1000000 + getpid()); mclients[i] = new MonClient(g_ceph_context); mclients[i]->build_initial_monmap(); diff --git a/src/libcephfs.cc b/src/libcephfs.cc index 41d4c93953a82..4ce2f1a0350c8 100644 --- a/src/libcephfs.cc +++ b/src/libcephfs.cc @@ -77,13 +77,7 @@ public: goto fail; //network connection - messenger = new SimpleMessenger(cct); - if (!messenger->register_entity(entity_name_t::CLIENT())) { - messenger->destroy(); - messenger = NULL; - ret = -1001; - goto fail; - } + messenger = new SimpleMessenger(cct, entity_name_t::CLIENT()); //at last the client ret = -1002; diff --git a/src/librados.cc b/src/librados.cc index 7262b759c94c4..2f6b3a79c60d8 100644 --- a/src/librados.cc +++ b/src/librados.cc @@ -937,7 +937,7 @@ int librados::RadosClient::connect() goto out; err = -ENOMEM; - messenger = new SimpleMessenger(cct); + messenger = new SimpleMessenger(cct, entity_name_t::CLIENT(-1)); if (!messenger) goto out; @@ -948,7 +948,6 @@ int librados::RadosClient::connect() ldout(cct, 1) << "starting msgr at " << messenger->get_ms_addr() << dendl; - messenger->register_entity(entity_name_t::CLIENT(-1)); ldout(cct, 1) << "starting objecter" << dendl; err = -ENOMEM; diff --git a/src/mds/Dumper.cc b/src/mds/Dumper.cc index 8b1f84929db4b..8556696c07151 100644 --- a/src/mds/Dumper.cc +++ b/src/mds/Dumper.cc @@ -55,7 +55,6 @@ void Dumper::init(int rank) objecter->set_client_incarnation(0); - messenger->register_entity(entity_name_t::CLIENT()); messenger->add_dispatcher_head(this); messenger->start_with_nonce(getpid()); diff --git a/src/mds/Resetter.cc b/src/mds/Resetter.cc index bc308fe4a461f..f5ba3cab40d7c 100644 --- a/src/mds/Resetter.cc +++ b/src/mds/Resetter.cc @@ -65,7 +65,6 @@ void Resetter::init(int rank) objecter->set_client_incarnation(0); - messenger->register_entity(entity_name_t::CLIENT()); messenger->add_dispatcher_head(this); messenger->start_with_nonce(getpid()); diff --git a/src/mon/MonClient.cc b/src/mon/MonClient.cc index 38f07725d9cd3..0648e405e2ea4 100644 --- a/src/mon/MonClient.cc +++ b/src/mon/MonClient.cc @@ -223,8 +223,7 @@ int MonClient::get_monmap_privately() bool temp_msgr = false; SimpleMessenger* smessenger = NULL; if (!messenger) { - messenger = smessenger = new SimpleMessenger(cct); - smessenger->register_entity(entity_name_t::CLIENT(-1)); + messenger = smessenger = new SimpleMessenger(cct, entity_name_t::CLIENT(-1)); messenger->add_dispatcher_head(this); smessenger->start_with_nonce(getpid()); temp_msgr = true; diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index a4140544c9785..bf34c43af5d4b 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -2468,38 +2468,6 @@ bool SimpleMessenger::verify_authorizer(Connection *con, int peer_type, return ms_deliver_verify_authorizer(con, peer_type, protocol, authorizer, authorizer_reply, isvalid); } - - -/* register_entity - */ -bool SimpleMessenger::register_entity(entity_name_t name) -{ - ldout(cct,10) << "register_entity " << name << dendl; - lock.Lock(); - - if (!destination_stopped) { //already have a working entity set - lock.Unlock(); - return false; - } - - // set it up - Messenger::set_myname(name); - // now i know my type. - if (my_type >= 0) - assert(my_type == name.type()); - else - my_type = name.type(); - - destination_stopped = false; - - ldout(cct,10) << "register_entity " << name << " at " << get_myaddr() << dendl; - - msgr->init_local_pipe(); - - lock.Unlock(); - return true; -} - void SimpleMessenger::submit_message(Message *m, Pipe *pipe) { lock.Lock(); diff --git a/src/msg/SimpleMessenger.h b/src/msg/SimpleMessenger.h index 71f091edc0473..00ad33fb94bdf 100644 --- a/src/msg/SimpleMessenger.h +++ b/src/msg/SimpleMessenger.h @@ -507,12 +507,12 @@ private: int get_proto_version(int peer_type, bool connect); public: - SimpleMessenger(CephContext *cct) : - Messenger(cct, entity_name_t()), + SimpleMessenger(CephContext *cct, entity_name_t name) : + Messenger(cct, name), accepter(this), lock("SimpleMessenger::lock"), started(false), did_bind(false), dispatch_throttler(cct->_conf->ms_dispatch_throttle_bytes), need_addr(true), - destination_stopped(true), my_type(-1), + destination_stopped(false), my_type(name.type()), global_seq_lock("SimpleMessenger::global_seq_lock"), global_seq(0), reaper_thread(this), reaper_started(false), reaper_stop(false), dispatch_thread(this), msgr(this), @@ -521,6 +521,7 @@ public: { // for local dmsg delivery dispatch_queue.local_pipe = new Pipe(this, Pipe::STATE_OPEN); + init_local_pipe(); } ~SimpleMessenger() { delete dispatch_queue.local_pipe; @@ -555,8 +556,6 @@ public: bool verify_authorizer(Connection *con, int peer_type, int protocol, bufferlist& auth, bufferlist& auth_reply, bool& isvalid); - bool register_entity(entity_name_t addr); - void submit_message(Message *m, const entity_addr_t& addr, int dest_type, bool lazy); void submit_message(Message *m, Pipe *pipe); diff --git a/src/testmsgr.cc b/src/testmsgr.cc index 313d4a5596a7e..ac7b6469a9d88 100644 --- a/src/testmsgr.cc +++ b/src/testmsgr.cc @@ -96,13 +96,13 @@ int main(int argc, const char **argv, const char *envp[]) { std::string sss(ss.str()); g_ceph_context->_conf->set_val("public_addr", sss.c_str()); g_ceph_context->_conf->apply_changes(NULL); - SimpleMessenger *rank = new SimpleMessenger(g_ceph_context); + SimpleMessenger *rank = new SimpleMessenger(g_ceph_context, + entity_name_t::MON(whoami)); int err = rank->bind(g_ceph_context->_conf->public_addr, getpid()); if (err < 0) return 1; // start monitor - rank->register_entity(entity_name_t::MON(whoami)); messenger = rank; messenger->set_default_send_priority(CEPH_MSG_PRIO_HIGH); messenger->add_dispatcher_head(&dispatcher); diff --git a/src/tools/common.cc b/src/tools/common.cc index b473b4cb04d35..9394d701ac243 100644 --- a/src/tools/common.cc +++ b/src/tools/common.cc @@ -650,8 +650,7 @@ CephToolCtx* ceph_tool_common_init(ceph_tool_mode_t mode, bool concise) tok = tok_init(NULL); // start up network - messenger = new SimpleMessenger(g_ceph_context); - messenger->register_entity(entity_name_t::CLIENT()); + messenger = new SimpleMessenger(g_ceph_context, entity_name_t::CLIENT()); messenger->start_with_nonce(getpid()); ctx->dispatcher = new Admin(ctx.get()); messenger->add_dispatcher_head(ctx->dispatcher); -- 2.39.5