summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorAndreas Sommer <andreas.sommer87@googlemail.com>2016-11-15 16:48:48 +0100
committerBenoit Foucher <benoit@zeroc.com>2016-11-16 09:03:15 +0100
commitb2d356c3333ec09fb38a96fd5d544e49c1a43ebb (patch)
tree618684582bb441ac49be8cb92c9584a484b0d94b /cpp
parentFixed ICE-7439 - Renamed IceGridDiscovery to IceLocatorDiscovery in PropertyN... (diff)
downloadice-b2d356c3333ec09fb38a96fd5d544e49c1a43ebb.tar.bz2
ice-b2d356c3333ec09fb38a96fd5d544e49c1a43ebb.tar.xz
ice-b2d356c3333ec09fb38a96fd5d544e49c1a43ebb.zip
Fix updating runtime properties for services using shared communicator
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/IceGrid/ServerI.cpp17
-rw-r--r--cpp/test/IceGrid/noRestartUpdate/AllTests.cpp3
2 files changed, 19 insertions, 1 deletions
diff --git a/cpp/src/IceGrid/ServerI.cpp b/cpp/src/IceGrid/ServerI.cpp
index 40f68962228..7ce139df955 100644
--- a/cpp/src/IceGrid/ServerI.cpp
+++ b/cpp/src/IceGrid/ServerI.cpp
@@ -341,7 +341,22 @@ private:
{
assert(_p->first.find("config_") == 0);
const string service = _p->first.substr(7);
- facet = "IceBox.Service." + service + ".Properties";
+ bool useSharedCommunicator = false;
+ for (PropertyDescriptorSeq::const_iterator d = _properties.at("config").begin(); d != _properties.at("config").end(); ++d)
+ {
+ if (d->name == "IceBox.UseSharedCommunicator." + service)
+ {
+ useSharedCommunicator = (atoi(d->value.c_str()) > 0);
+ }
+ }
+ if (useSharedCommunicator)
+ {
+ facet = "IceBox.SharedCommunicator.Properties";
+ }
+ else
+ {
+ facet = "IceBox.Service." + service + ".Properties";
+ }
if(_traceLevels->server > 1)
{
const string id = _server->getId();
diff --git a/cpp/test/IceGrid/noRestartUpdate/AllTests.cpp b/cpp/test/IceGrid/noRestartUpdate/AllTests.cpp
index f0bf89f6f65..678534f6485 100644
--- a/cpp/test/IceGrid/noRestartUpdate/AllTests.cpp
+++ b/cpp/test/IceGrid/noRestartUpdate/AllTests.cpp
@@ -565,6 +565,9 @@ allTests(const Ice::CommunicatorPtr& communicator)
service->name = "Service2";
icebox->services[1].descriptor = ServiceDescriptorPtr::dynamicCast(service->ice_clone());
service->name = "Service3";
+ // Test also with shared communicator because it uses different proxy name
+ // and thus different branches in code.
+ addProperty(icebox, "IceBox.UseSharedCommunicator.Service3", "1");
icebox->services[2].descriptor = ServiceDescriptorPtr::dynamicCast(service->ice_clone());
try