]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msgr: server shouldn't initiate outgoing connections
authorSage Weil <sage@newdream.net>
Fri, 28 Aug 2009 21:24:01 +0000 (14:24 -0700)
committerSage Weil <sage@newdream.net>
Fri, 28 Aug 2009 21:24:01 +0000 (14:24 -0700)
src/msg/SimpleMessenger.cc

index c669924247c7de4cfdbc20d97b902ae22ce4fbe5..268c6a6b46e457abbd97e15c2831ce878be9044b 100644 (file)
@@ -623,10 +623,11 @@ int SimpleMessenger::Pipe::accept()
 
       if (connect.connect_seq == existing->connect_seq) {
        // connection race?
-       if (peer_addr < rank->rank_addr) {
+       if (peer_addr < rank->rank_addr ||
+           existing->policy.server) {
          // incoming wins
          dout(10) << "accept connection race, existing " << existing << ".cseq " << existing->connect_seq
-                  << " == " << connect.connect_seq << ", replacing my attempt" << dendl;
+                  << " == " << connect.connect_seq << ", or we are server, replacing my attempt" << dendl;
          assert(existing->state == STATE_CONNECTING ||
                 existing->state == STATE_STANDBY ||
                 existing->state == STATE_WAIT);
@@ -1384,8 +1385,12 @@ void SimpleMessenger::Pipe::writer()
 
     // connect?
     if (state == STATE_CONNECTING) {
-      connect();
-      continue;
+      if (policy.server) {
+       state = STATE_STANDBY;
+      } else {
+       connect();
+       continue;
+      }
     }
     
     if (state == STATE_CLOSING) {