diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-06-09 09:24:25 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-06-09 09:24:25 +0200 |
commit | 0dfa4ad213abb67f63fd7a27263e7adeb8360792 (patch) | |
tree | 2443d951a483dcef64b924ed804a9a156064c4b4 /storage | |
parent | 28d081f87135f247eb2da828ff68e0b8a99efe63 (diff) |
If ports change, request shutdown.
Diffstat (limited to 'storage')
3 files changed, 23 insertions, 2 deletions
diff --git a/storage/src/vespa/storage/storageserver/communicationmanager.cpp b/storage/src/vespa/storage/storageserver/communicationmanager.cpp index f8bf16c7688..540bc2e5bc2 100644 --- a/storage/src/vespa/storage/storageserver/communicationmanager.cpp +++ b/storage/src/vespa/storage/storageserver/communicationmanager.cpp @@ -10,11 +10,14 @@ #include <vespa/messagebus/rpcmessagebus.h> #include <vespa/messagebus/emptyreply.h> #include <vespa/vespalib/stllike/asciistream.h> +#include <vespa/vespalib/util/stringfmt.h> #include <vespa/vespalib/stllike/hash_map.hpp> #include <vespa/log/bufferedlogger.h> LOG_SETUP(".communication.manager"); +using vespalib::make_string; + namespace storage { PriorityQueue::PriorityQueue() : @@ -370,12 +373,23 @@ CommunicationManager::configureMessageBusLimits( : cfg.mbusContentNodeMaxPendingSize); } -void CommunicationManager::configure( - std::unique_ptr<CommunicationManagerConfig> config) +void CommunicationManager::configure(std::unique_ptr<CommunicationManagerConfig> config) { // Only allow dynamic (live) reconfiguration of message bus limits. if (_mbus.get()) { configureMessageBusLimits(*config); + if (_mbus->getRPCNetwork().getPort() != config->mbusport) { + auto m = make_string("mbus port changed from %d to %d. Will conduct a quick, but controlled restart.", + _mbus->getRPCNetwork().getPort(), config->mbusport); + LOG(warning, "%s", m.c_str()); + _component.requestShutdown(m); + } + if (_listener->getListenPort() != config->rpcport) { + auto m = make_string("mbus port changed from %d to %d. Will conduct a quick, but controlled restart.", + _listener->getListenPort(), config->rpcport); + LOG(warning, "%s", m.c_str()); + _component.requestShutdown(m); + } return; }; diff --git a/storage/src/vespa/storage/storageserver/fnetlistener.cpp b/storage/src/vespa/storage/storageserver/fnetlistener.cpp index 0572d17af4c..bcd98effd60 100644 --- a/storage/src/vespa/storage/storageserver/fnetlistener.cpp +++ b/storage/src/vespa/storage/storageserver/fnetlistener.cpp @@ -36,6 +36,12 @@ FNetListener::~FNetListener() } } +int +FNetListener::getListenPort() const +{ + return _orb->GetListenPort(); +} + void FNetListener::registerHandle(const vespalib::stringref & handle) { _slobrokRegister.registerName(handle); diff --git a/storage/src/vespa/storage/storageserver/fnetlistener.h b/storage/src/vespa/storage/storageserver/fnetlistener.h index 781f818b673..ecbfb0ce9d9 100644 --- a/storage/src/vespa/storage/storageserver/fnetlistener.h +++ b/storage/src/vespa/storage/storageserver/fnetlistener.h @@ -22,6 +22,7 @@ public: void registerHandle(const vespalib::stringref & handle); void close(); + int getListenPort() const; // Used by unit tests. bool serviceExists(const vespalib::stringref & connectionSpec); |