]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
monclient: ignore resets on non-current mon
authorSage Weil <sage@newdream.net>
Tue, 13 Oct 2009 18:54:57 +0000 (11:54 -0700)
committerSage Weil <sage@newdream.net>
Tue, 13 Oct 2009 18:54:57 +0000 (11:54 -0700)
src/mon/MonClient.cc

index 03a678153d187e21a3e68cb0e335e72f16e1b24f..a84a30724aa7393b05628f35dc1d5ef6b323e16e 100644 (file)
@@ -322,19 +322,21 @@ void MonClient::_reopen_session()
 
 bool MonClient::ms_handle_reset(Connection *con)
 {
+  Mutex::Locker lock(monc_lock);
+
   if (con->get_peer_type() == CEPH_ENTITY_TYPE_MON) {
     if (con->get_peer_addr() != monmap.get_inst(cur_mon).addr) {
       dout(10) << "ms_handle_reset stray mon " << con->get_peer_addr() << dendl;
       return true;
+    } else {
+      dout(10) << "ms_handle_reset current mon " << con->get_peer_addr() << dendl;
+      if (hunting)
+       return true;
+      
+      dout(0) << "hunting for new mon" << dendl;
+      hunting = true;
+      _reopen_session();
     }
-    
-    dout(10) << "ms_handle_reset current mon" << con->get_peer_addr() << dendl;
-    if (hunting)
-      return true;
-    
-    dout(0) << "hunting for new mon" << dendl;
-    hunting = true;
-    _reopen_session();
   }
   return false;
 }
@@ -354,6 +356,7 @@ void MonClient::tick()
   if (hunting) {
     dout(0) << "continuing hunt" << dendl;
     _reopen_session();
+
   } else {
     // just renew as needed
     utime_t now = g_clock.now();