]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/async: better debug around conn map lookups and updates
authorSage Weil <sage@redhat.com>
Wed, 19 Dec 2018 16:39:55 +0000 (10:39 -0600)
committerSage Weil <sage@redhat.com>
Thu, 3 Jan 2019 17:17:31 +0000 (11:17 -0600)
Signed-off-by: Sage Weil <sage@redhat.com>
src/msg/async/AsyncMessenger.cc
src/msg/async/AsyncMessenger.h
src/msg/async/ProtocolV2.cc

index 765833308ad0e31484ca65a206ffe9da37f2ed39..d310e0cd7cca2a9b3ff412698bdd4f758493d868 100644 (file)
@@ -593,6 +593,8 @@ AsyncConnectionRef AsyncMessenger::create_connect(
                                                target.is_msgr2(), false);
   conn->connect(addrs, type, target);
   ceph_assert(!conns.count(addrs));
+  ldout(cct, 10) << __func__ << " " << conn << " " << addrs << " "
+                << conn->peer_addrs << dendl;
   conns[addrs] = conn;
   w->get_perf_counter()->inc(l_msgr_active_connections);
 
@@ -811,6 +813,31 @@ int AsyncMessenger::get_proto_version(int peer_type, bool connect) const
   return 0;
 }
 
+int AsyncMessenger::accept_conn(AsyncConnectionRef conn)
+{
+  Mutex::Locker l(lock);
+  auto it = conns.find(conn->peer_addrs);
+  if (it != conns.end()) {
+    AsyncConnectionRef existing = it->second;
+
+    // lazy delete, see "deleted_conns"
+    // If conn already in, we will return 0
+    Mutex::Locker l(deleted_lock);
+    if (deleted_conns.erase(existing)) {
+      existing->get_perf_counter()->dec(l_msgr_active_connections);
+      conns.erase(it);
+    } else if (conn != existing) {
+      return -1;
+    }
+  }
+  ldout(cct, 10) << __func__ << " " << conn << " " << conn->peer_addrs << dendl;
+  conns[conn->peer_addrs] = conn;
+  conn->get_perf_counter()->inc(l_msgr_active_connections);
+  accepting_conns.erase(conn);
+  return 0;
+}
+
+
 bool AsyncMessenger::learned_addr(const entity_addr_t &peer_addr_for_me)
 {
   // be careful here: multiple threads may block here, and readers of
index 0de46a3c9f88f4ffd8cddf1fb0d6463825a1b360..b12dce625fdab82b3a63172c424dcd7391996fd1 100644 (file)
@@ -350,28 +350,7 @@ public:
     return _lookup_conn(k);
   }
 
-  int accept_conn(AsyncConnectionRef conn) {
-    Mutex::Locker l(lock);
-    auto it = conns.find(conn->peer_addrs);
-    if (it != conns.end()) {
-      AsyncConnectionRef existing = it->second;
-
-      // lazy delete, see "deleted_conns"
-      // If conn already in, we will return 0
-      Mutex::Locker l(deleted_lock);
-      if (deleted_conns.erase(existing)) {
-        existing->get_perf_counter()->dec(l_msgr_active_connections);
-        conns.erase(it);
-      } else if (conn != existing) {
-        return -1;
-      }
-    }
-    conns[conn->peer_addrs] = conn;
-    conn->get_perf_counter()->inc(l_msgr_active_connections);
-    accepting_conns.erase(conn);
-    return 0;
-  }
-
+  int accept_conn(AsyncConnectionRef conn);
   bool learned_addr(const entity_addr_t &peer_addr_for_me);
   void add_accept(Worker *w, ConnectedSocket cli_socket,
                  const entity_addr_t &listen_addr,
index 9bbe10aed2dcd00ca1d4ab7f4f9ce2847129455c..dc6c21e04aa3caa65d5fbbd959de0bf940583190 100644 (file)
@@ -1990,7 +1990,8 @@ CtPtr ProtocolV2::handle_connect_message_2() {
 
   // existing?
   AsyncConnectionRef existing = messenger->lookup_conn(connection->peer_addrs);
-
+  ldout(cct, 10) << __func__ << " existing " << existing
+                << " on " << connection->peer_addrs << dendl;
   connection->inject_delay();
 
   connection->lock.lock();