summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-11-09 14:50:24 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-11-09 14:50:24 +0000
commitaa611f4618888be2d1fb2f8b479e68bf0c266cda (patch)
tree2cf634538ef7724a04f5ac4b00272410544ab174 /cpp/src
parentadding separate third party license files, fixing staging bugs, fixing (diff)
downloadice-aa611f4618888be2d1fb2f8b479e68bf0c266cda.tar.bz2
ice-aa611f4618888be2d1fb2f8b479e68bf0c266cda.tar.xz
ice-aa611f4618888be2d1fb2f8b479e68bf0c266cda.zip
Fixed a bug where servers wouldn't be updated if only the service template
changed, fixed a bug where servers were re-loaded twice.
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/IceGrid/Database.cpp2
-rw-r--r--cpp/src/IceGrid/DescriptorHelper.cpp11
2 files changed, 9 insertions, 4 deletions
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp
index d7d56247379..e4a76f453dc 100644
--- a/cpp/src/IceGrid/Database.cpp
+++ b/cpp/src/IceGrid/Database.cpp
@@ -1154,7 +1154,7 @@ Database::reload(const ApplicationHelper& oldApp, const ApplicationHelper& newAp
}
else if(p->second.node != q->second.node || !descriptorEqual(p->second.descriptor, q->second.descriptor))
{
- entries.push_back(_serverCache.remove(p->first, false)); // Don't destroy the server if it was updated.
+ _serverCache.remove(p->first, false); // Don't destroy the server if it was updated.
load.push_back(p->second);
}
}
diff --git a/cpp/src/IceGrid/DescriptorHelper.cpp b/cpp/src/IceGrid/DescriptorHelper.cpp
index 3fd0113641c..e3607718d26 100644
--- a/cpp/src/IceGrid/DescriptorHelper.cpp
+++ b/cpp/src/IceGrid/DescriptorHelper.cpp
@@ -1191,8 +1191,14 @@ ServiceInstanceHelper::instantiate(const Resolver& resolve) const
ServiceInstanceDescriptor desc;
desc.descriptor = def.instantiate(svcResolve);
- desc._cpp_template = _template;
- desc.parameterValues = _parameters;
+ //
+ // NOTE: We can't keep the following attributes in the service
+ // instance otherwise the instance comparison would be based on
+ // the template + parameters which would be wrong (if the template
+ // changed the instance also changed.)
+ //
+ //desc._cpp_template = _template;
+ //desc.parameterValues = _parameters;
return desc;
}
@@ -2555,7 +2561,6 @@ IceGrid::descriptorEqual(const ServerDescriptorPtr& lhs, const ServerDescriptorP
{
return false;
}
-
IceBoxDescriptorPtr lhsIceBox = IceBoxDescriptorPtr::dynamicCast(lhs);
if(lhsIceBox)
{