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);
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
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,
// 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();