]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/async: make loopback detect when sending to one of our many addrs
authorSage Weil <sage@redhat.com>
Fri, 14 Dec 2018 21:10:50 +0000 (15:10 -0600)
committerSage Weil <sage@redhat.com>
Thu, 3 Jan 2019 17:17:31 +0000 (11:17 -0600)
Drop the assert just because it's inefficient and not necessary.

Signed-off-by: Sage Weil <sage@redhat.com>
src/msg/async/AsyncMessenger.cc

index b67c9bc4e7c3f8ec7f3f58d6de5774b95119ee4d..765833308ad0e31484ca65a206ffe9da37f2ed39 100644 (file)
@@ -570,7 +570,6 @@ AsyncConnectionRef AsyncMessenger::create_connect(
   const entity_addrvec_t& addrs, int type)
 {
   ceph_assert(lock.is_locked());
-  ceph_assert(addrs != *my_addrs);
 
   ldout(cct, 10) << __func__ << " " << addrs
       << ", creating connection and registering" << dendl;
@@ -603,7 +602,9 @@ AsyncConnectionRef AsyncMessenger::create_connect(
 ConnectionRef AsyncMessenger::connect_to(int type, const entity_addrvec_t& addrs)
 {
   Mutex::Locker l(lock);
-  if (*my_addrs == addrs) {
+  if (*my_addrs == addrs ||
+      (addrs.v.size() == 1 &&
+       my_addrs->contains(addrs.front()))) {
     // local
     return local_connection;
   }
@@ -673,7 +674,9 @@ void AsyncMessenger::submit_message(Message *m, AsyncConnectionRef con,
   }
 
   // local?
-  if (*my_addrs == dest_addrs) {
+  if (*my_addrs == dest_addrs ||
+      (dest_addrs.v.size() == 1 &&
+       my_addrs->contains(dest_addrs.front()))) {
     // local
     local_connection->send_message(m);
     return ;