diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-11-09 14:50:24 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-11-09 14:50:24 +0000 |
commit | aa611f4618888be2d1fb2f8b479e68bf0c266cda (patch) | |
tree | 2cf634538ef7724a04f5ac4b00272410544ab174 /cpp/src | |
parent | adding separate third party license files, fixing staging bugs, fixing (diff) | |
download | ice-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.cpp | 2 | ||||
-rw-r--r-- | cpp/src/IceGrid/DescriptorHelper.cpp | 11 |
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) { |