]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msgr: Remove the SimpleMessenger start/start_with_nonce distinction.
authorGreg Farnum <gregory.farnum@dreamhost.com>
Fri, 2 Mar 2012 01:12:28 +0000 (17:12 -0800)
committerGreg Farnum <gregory.farnum@dreamhost.com>
Fri, 2 Mar 2012 19:20:27 +0000 (11:20 -0800)
Instead, have a settable nonce value that you can fill in any time
after construction and that it uses during regular start().

Signed-off-by: Greg Farnum <gregory.farnum@dreamhost.com>
src/ceph_fuse.cc
src/ceph_mds.cc
src/ceph_osd.cc
src/libcephfs.cc
src/librados.cc
src/mds/Dumper.cc
src/mds/Resetter.cc
src/mon/MonClient.cc
src/msg/SimpleMessenger.cc
src/msg/SimpleMessenger.h
src/tools/common.cc

index 2450eefc082d19e63fee20b4b9f6d25e71078d19..fbdc508df6843d8a5e86be2084e4fa042e782e33 100644 (file)
@@ -90,7 +90,9 @@ int main(int argc, const char **argv, const char *envp[]) {
     return -1;
 
   // start up network
-  SimpleMessenger *messenger = new SimpleMessenger(g_ceph_context, entity_name_t::CLIENT());
+  SimpleMessenger *messenger = new SimpleMessenger(g_ceph_context,
+                                                   entity_name_t::CLIENT());
+  messenger->set_nonce(getpid());
   Client *client = new Client(messenger, &mc);
   if (filer_flags) {
     client->set_filer_flags(filer_flags);
@@ -116,7 +118,7 @@ int main(int argc, const char **argv, const char *envp[]) {
     ::close(fd[0]);
 
     cout << "ceph-fuse[" << getpid() << "]: starting ceph client" << std::endl;
-    messenger->start_with_nonce(getpid());
+    messenger->start();
 
     // start client
     client->init();
index f33b9bf007787caeb8f23f5e42492876fdcf31d0..bc5095559b63c59dd0f8d49cf237ca66658340e7 100644 (file)
@@ -72,6 +72,7 @@ static int do_cmds_special_action(const std::string &action,
   SimpleMessenger *messenger = new SimpleMessenger(g_ceph_context,
                                                    entity_name_t::CLIENT());
   int r = messenger->bind(g_conf->public_addr, getpid());
+  messenger->set_nonce(getpid());
   if (r < 0)
     return r;
   MonClient mc(g_ceph_context);
index 8896d443f7381892053f218d680036e248b8dcb8..9e8b96762187d255c7a2218682d8e382d75d4e44 100644 (file)
@@ -302,10 +302,11 @@ int main(int argc, const char **argv)
 
   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_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_hbin->set_nonce(getpid());
   messenger_hbout->set_cluster_protocol(CEPH_OSD_PROTOCOL);
 
   r = client_messenger->bind(g_conf->public_addr, getpid());
@@ -394,7 +395,7 @@ int main(int argc, const char **argv)
   global_init_shutdown_stderr(g_ceph_context);
 
   client_messenger->start();
-  messenger_hbin->start_with_nonce(getpid());
+  messenger_hbin->start();
   messenger_hbout->start();
   cluster_messenger->start();
 
index 4ce2f1a0350c880eb05406b8cd978f8e22c4ba61..377ab45db405bc10351fb75e56fc06f37358b917 100644 (file)
@@ -78,6 +78,7 @@ public:
 
     //network connection
     messenger = new SimpleMessenger(cct, entity_name_t::CLIENT());
+    messenger->set_nonce(msgr_nonce);
 
     //at last the client
     ret = -1002;
@@ -86,7 +87,7 @@ public:
       goto fail;
 
     ret = -1003;
-    if (messenger->start_with_nonce(msgr_nonce) != 0)
+    if (messenger->start() != 0)
       goto fail;
 
     ret = client->init();
index 2f6b3a79c60d83b39ee7c3b9dd28aead90db2e83..4631ac31b1484aea123176c9708d56a80df1f143 100644 (file)
@@ -937,10 +937,12 @@ int librados::RadosClient::connect()
     goto out;
 
   err = -ENOMEM;
+  nonce = getpid() + (1000000 * (uint64_t)rados_instance.inc());
   messenger = new SimpleMessenger(cct, entity_name_t::CLIENT(-1));
   if (!messenger)
     goto out;
 
+  messenger->set_nonce(nonce);
   // require OSDREPLYMUX feature.  this means we will fail to talk to
   // old servers.  this is necessary because otherwise we won't know
   // how to decompose the reply data into its consituent pieces.
@@ -960,9 +962,7 @@ int librados::RadosClient::connect()
 
   messenger->add_dispatcher_head(this);
 
-  nonce = getpid() + (1000000 * (uint64_t)rados_instance.inc());
-
-  messenger->start_with_nonce(nonce);
+  messenger->start();
   messenger->add_dispatcher_head(this);
 
   ldout(cct, 1) << "setting wanted keys" << dendl;
index 8556696c07151b8ac9f9e7c88069f684ddcd52bd..d963c9d567c346795a8e6aea487333eaedb2c1b6 100644 (file)
@@ -56,7 +56,7 @@ void Dumper::init(int rank)
   objecter->set_client_incarnation(0);
 
   messenger->add_dispatcher_head(this);
-  messenger->start_with_nonce(getpid());
+  messenger->start();
 
   monc->set_want_keys(CEPH_ENTITY_TYPE_MON|CEPH_ENTITY_TYPE_OSD|CEPH_ENTITY_TYPE_MDS);
   monc->set_messenger(messenger);
index f5ba3cab40d7cbc866d27989d5fd9d278bcc93d6..63139f56588456ff8362beafc4abb63348aa12f9 100644 (file)
@@ -66,7 +66,7 @@ void Resetter::init(int rank)
   objecter->set_client_incarnation(0);
 
   messenger->add_dispatcher_head(this);
-  messenger->start_with_nonce(getpid());
+  messenger->start();
 
   monc->set_want_keys(CEPH_ENTITY_TYPE_MON|CEPH_ENTITY_TYPE_OSD|CEPH_ENTITY_TYPE_MDS);
   monc->set_messenger(messenger);
index 0648e405e2ea473becfbab69fb2636ee594d7a7f..db1b805df996f4f69b0b122af108e862dfba882b 100644 (file)
@@ -224,8 +224,9 @@ int MonClient::get_monmap_privately()
   SimpleMessenger* smessenger = NULL;
   if (!messenger) {
     messenger = smessenger = new SimpleMessenger(cct, entity_name_t::CLIENT(-1));
+    smessenger->set_nonce(getpid());
     messenger->add_dispatcher_head(this);
-    smessenger->start_with_nonce(getpid());
+    smessenger->start();
     temp_msgr = true; 
   }
   
index bf34c43af5d4b994d7bef31640ee2b81eca87012..3d0ad69bf108fe06efe544cfdddd992c54af7a44 100644 (file)
@@ -2402,13 +2402,13 @@ int SimpleMessenger::rebind(int avoid_port)
   return accepter.rebind(avoid_port);
 }
 
-int SimpleMessenger::start_with_nonce(uint64_t nonce)
+int SimpleMessenger::start()
 {
   lock.Lock();
   ldout(cct,1) << "messenger.start" << dendl;
 
   // register at least one entity, first!
-  assert(my_type >= 0); 
+  assert(my_type >= 0);
 
   assert(!started);
   started = true;
index 00ad33fb94bdff233ab507ee82626d1b4eac2025..efb1d662993c31062d4eab24efacd636ba0e33e9 100644 (file)
@@ -392,6 +392,8 @@ private:
   // where i listen
   bool need_addr;
   entity_addr_t ms_addr;
+  uint64_t nonce;
+  void set_nonce(uint64_t new_nonce) { nonce = new_nonce; }
   
   // local
   bool destination_stopped;
@@ -512,7 +514,7 @@ public:
     accepter(this),
     lock("SimpleMessenger::lock"), started(false), did_bind(false),
     dispatch_throttler(cct->_conf->ms_dispatch_throttle_bytes), need_addr(true),
-    destination_stopped(false), my_type(name.type()),
+    nonce(0), 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),
@@ -527,14 +529,8 @@ public:
     delete dispatch_queue.local_pipe;
   }
 
-  //void set_listen_addr(tcpaddr_t& a);
-
   int bind(entity_addr_t bind_addr, int64_t nonce);
-  int start_with_nonce(uint64_t nonce);  // if we didn't bind
-  virtual int start() {                 // if we did
-    assert(did_bind);
-    return start_with_nonce(0);
-  }
+  virtual int start();
   virtual void wait();
 
   void set_cluster_protocol(int p) {
index 9394d701ac2439df47a170ad9ef40b1331b267ae..376c4103d87144cc1bf5d14ed8c757b1dc991505 100644 (file)
@@ -651,7 +651,8 @@ CephToolCtx* ceph_tool_common_init(ceph_tool_mode_t mode, bool concise)
 
   // start up network
   messenger = new SimpleMessenger(g_ceph_context, entity_name_t::CLIENT());
-  messenger->start_with_nonce(getpid());
+  messenger->set_nonce(getpid());
+  messenger->start();
   ctx->dispatcher = new Admin(ctx.get());
   messenger->add_dispatcher_head(ctx->dispatcher);