]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/async: msgr2: unregister con from accept vs mark_down race
authorRicardo Dias <rdias@suse.com>
Mon, 14 Jan 2019 11:36:06 +0000 (11:36 +0000)
committerRicardo Dias <rdias@suse.com>
Wed, 23 Jan 2019 13:59:27 +0000 (13:59 +0000)
Msgr2 version of PR #25755

Signed-off-by: Ricardo Dias <rdias@suse.com>
src/msg/async/ProtocolV2.cc

index 856c450e6cb3e436d67fdb892e7f165ddb05be6d..03b478b8ef3b7fa89a222d0a482fc6531ff7fa8d 100644 (file)
@@ -650,6 +650,7 @@ CtPtr ProtocolV2::_fault() {
     } else {
       ldout(cct, 0) << __func__ << " initiating reconnect" << dendl;
       connect_seq++;
+      global_seq = messenger->get_global_seq();
       state = START_CONNECT;
       connection->state = AsyncConnection::STATE_CONNECTING;
     }
@@ -666,6 +667,7 @@ CtPtr ProtocolV2::_fault() {
         backoff.set_from_double(cct->_conf->ms_max_backoff);
     }
 
+    global_seq = messenger->get_global_seq();
     state = START_CONNECT;
     connection->state = AsyncConnection::STATE_CONNECTING;
     ldout(cct, 10) << __func__ << " waiting " << backoff << dendl;
@@ -2893,6 +2895,7 @@ CtPtr ProtocolV2::send_server_ident() {
                   << " state changed while accept_conn, it must be mark_down"
                   << dendl;
     ceph_assert(state == CLOSED || state == NONE);
+    messenger->unregister_conn(connection);
     connection->inject_delay();
     return _fault();
   }
@@ -2949,6 +2952,7 @@ CtPtr ProtocolV2::send_reconnect_ok() {
                   << " state changed while accept_conn, it must be mark_down"
                   << dendl;
     ceph_assert(state == CLOSED || state == NONE);
+    messenger->unregister_conn(connection);
     connection->inject_delay();
     return _fault();
   }