summaryrefslogtreecommitdiffstats
path: root/slobrok
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2021-08-16 12:19:24 +0000
committerArne Juul <arnej@verizonmedia.com>2021-08-16 12:21:53 +0000
commit523cae59a21a3b7d6d21c4749ef0384595b85fcb (patch)
tree88a9364a42dd70f9730530810fe5fd3007eefaa3 /slobrok
parent4324d883cbd8fe08a919d776772052c4e2fef297 (diff)
explicit cleanup of partners
Diffstat (limited to 'slobrok')
-rw-r--r--slobrok/src/vespa/slobrok/server/sbenv.cpp8
-rw-r--r--slobrok/src/vespa/slobrok/server/sbenv.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/slobrok/src/vespa/slobrok/server/sbenv.cpp b/slobrok/src/vespa/slobrok/server/sbenv.cpp
index 6bf5bbd985d..997153d3006 100644
--- a/slobrok/src/vespa/slobrok/server/sbenv.cpp
+++ b/slobrok/src/vespa/slobrok/server/sbenv.cpp
@@ -121,10 +121,17 @@ SBEnv::SBEnv(const ConfigShim &shim)
_rpcHooks.initRPC(getSupervisor());
}
+void SBEnv::cleanup() {
+ auto pList = _exchanger.getPartnerList();
+ for (const auto & partner : pList) {
+ _exchanger.removePartner(partner);
+ }
+}
SBEnv::~SBEnv()
{
getTransport()->WaitFinished();
+ cleanup();
}
FNET_Scheduler *
@@ -183,6 +190,7 @@ SBEnv::MainLoop()
EV_STARTED("slobrok");
getTransport()->Main();
LOG(debug, "slobrok: main event loop done");
+ cleanup();
} catch (vespalib::Exception &e) {
LOG(error, "invalid config: %s", e.what());
EV_STOPPING("slobrok", "invalid config");
diff --git a/slobrok/src/vespa/slobrok/server/sbenv.h b/slobrok/src/vespa/slobrok/server/sbenv.h
index 853e72e83c5..0ed3dd8a379 100644
--- a/slobrok/src/vespa/slobrok/server/sbenv.h
+++ b/slobrok/src/vespa/slobrok/server/sbenv.h
@@ -58,6 +58,7 @@ private:
LocalRpcMonitorMap _localRpcMonitorMap;
ServiceMapHistory _globalVisibleHistory;
+ void cleanup();
public:
explicit SBEnv(const ConfigShim &shim);
~SBEnv();