From f8e413f9c79a3a2a12801f5f64a2f612de3f06a0 Mon Sep 17 00:00:00 2001 From: Xihui He Date: Mon, 30 Dec 2013 12:04:10 +0800 Subject: [PATCH] msgr: fix rebind() race stop the accepter and mark all pipes down before rebind to avoid race Fixes: #6992 Signed-off-by: Xihui He xihuihe@gmail.com --- src/msg/Accepter.cc | 2 -- src/msg/SimpleMessenger.cc | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/msg/Accepter.cc b/src/msg/Accepter.cc index d6e94d1cc515..5eebb2eec61f 100644 --- a/src/msg/Accepter.cc +++ b/src/msg/Accepter.cc @@ -155,8 +155,6 @@ int Accepter::rebind(const set& avoid_ports) { ldout(msgr->cct,1) << "accepter.rebind avoid " << avoid_ports << dendl; - stop(); - // invalidate our previously learned address. msgr->unlearn_addr(); diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index 441ed432af00..024c965ff959 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -277,9 +277,9 @@ int SimpleMessenger::rebind(const set& avoid_ports) { ldout(cct,1) << "rebind avoid " << avoid_ports << dendl; assert(did_bind); - int r = accepter.rebind(avoid_ports); + accepter.stop(); mark_down_all(); - return r; + return accepter.rebind(avoid_ports); } int SimpleMessenger::start() -- 2.47.3