From f651f93b343f81bd0b4645f5def8ce3f2cf4abed Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sun, 24 Aug 2014 21:18:00 -0700 Subject: [PATCH] msg/Accepter: do not unlearn_addr on bind() It is dangerous to set need_addr = true as it means someone may set the addr to something else (specifically the port) in a racing thread. However, it is not necessary: the only reason we added it way back in 5d5045d31a9e10d21b44eb1bd137db9ae53128ff was so that local_connection->peer_addr would get updated, and bind() now calls that unconditionally. Fixes: #9079 Backport: firefly Signed-off-by: Sage Weil --- src/msg/Accepter.cc | 3 --- src/msg/SimpleMessenger.cc | 7 ------- src/msg/SimpleMessenger.h | 7 ------- 3 files changed, 17 deletions(-) diff --git a/src/msg/Accepter.cc b/src/msg/Accepter.cc index 718d4785e28..029a037bdbd 100644 --- a/src/msg/Accepter.cc +++ b/src/msg/Accepter.cc @@ -152,9 +152,6 @@ int Accepter::rebind(const set& avoid_ports) { ldout(msgr->cct,1) << "accepter.rebind avoid " << avoid_ports << dendl; - // invalidate our previously learned address. - msgr->unlearn_addr(); - entity_addr_t addr = msgr->get_myaddr(); set new_avoid = avoid_ports; new_avoid.insert(addr.get_port()); diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index 6001acf3a60..f1f052bce92 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -694,13 +694,6 @@ void SimpleMessenger::learned_addr(const entity_addr_t &peer_addr_for_me) lock.Unlock(); } -void SimpleMessenger::unlearn_addr() -{ - lock.Lock(); - need_addr = true; - lock.Unlock(); -} - void SimpleMessenger::init_local_connection() { local_connection->peer_addr = my_inst.addr; diff --git a/src/msg/SimpleMessenger.h b/src/msg/SimpleMessenger.h index 2943db9d454..006b60be695 100644 --- a/src/msg/SimpleMessenger.h +++ b/src/msg/SimpleMessenger.h @@ -385,13 +385,6 @@ public: */ void learned_addr(const entity_addr_t& peer_addr_for_me); - /** - * Tell the SimpleMessenger its address is no longer known - * - * This happens when we rebind to a new port. - */ - void unlearn_addr(); - /** * Release memory accounting back to the dispatch throttler. * -- 2.47.3