diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/IceGrid/Activator.cpp | 2 | ||||
-rw-r--r-- | cpp/src/IceGrid/AdapterCache.cpp | 12 | ||||
-rw-r--r-- | cpp/src/IceGrid/Database.cpp | 8 | ||||
-rw-r--r-- | cpp/src/IceGrid/LocatorI.cpp | 6 | ||||
-rw-r--r-- | cpp/src/IceGrid/Parser.cpp | 1 | ||||
-rw-r--r-- | cpp/src/IceGrid/ServerI.cpp | 2 |
6 files changed, 23 insertions, 8 deletions
diff --git a/cpp/src/IceGrid/Activator.cpp b/cpp/src/IceGrid/Activator.cpp index 92c1d218ef3..0f81fd3f3fc 100644 --- a/cpp/src/IceGrid/Activator.cpp +++ b/cpp/src/IceGrid/Activator.cpp @@ -344,7 +344,7 @@ Activator::activate(const string& name, return false; } - string path = IcePatch2::simplify(exePath); + string path = exePath; if(path.empty()) { return false; diff --git a/cpp/src/IceGrid/AdapterCache.cpp b/cpp/src/IceGrid/AdapterCache.cpp index 36dd71d292f..5a9459c1960 100644 --- a/cpp/src/IceGrid/AdapterCache.cpp +++ b/cpp/src/IceGrid/AdapterCache.cpp @@ -114,10 +114,7 @@ AdapterEntry::enableReplication(const LoadBalancingPolicyPtr& policy) { _loadBalancingNReplicas = 1; } - else if(_loadBalancingNReplicas > static_cast<int>(_servers.size())) - { - _loadBalancingNReplicas = _servers.size(); - } + AdaptiveLoadBalancingPolicyPtr alb = AdaptiveLoadBalancingPolicyPtr::dynamicCast(_loadBalancing); if(alb) { @@ -251,19 +248,22 @@ AdapterEntry::getProxies(int& nReplicas) } vector<pair<string, AdapterPrx> > adapters; + auto_ptr<NodeUnreachableException> exception; for(vector<ServerEntryPtr>::const_iterator p = servers.begin(); p != servers.end(); ++p) { try { adapters.push_back(make_pair((*p)->getId(), (*p)->getAdapter(_id))); } - catch(const NodeUnreachableException&) + catch(const NodeUnreachableException& ex) { + exception.reset(dynamic_cast<NodeUnreachableException*>(ex.ice_clone())); } } if(adapters.empty()) { - throw NodeUnreachableException(); + assert(exception.get()); + throw *exception.get(); } nReplicas = _replicated ? _loadBalancingNReplicas : 1; diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp index 4c05329a868..46529ec0ac0 100644 --- a/cpp/src/IceGrid/Database.cpp +++ b/cpp/src/IceGrid/Database.cpp @@ -1046,12 +1046,20 @@ Database::reload(const ApplicationHelper& oldApp, const ApplicationHelper& newAp ReplicatedAdapterDescriptorSeq::const_iterator r; for(r = oldAdpts.begin(); r != oldAdpts.end(); ++r) { + for(ObjectDescriptorSeq::const_iterator o = r->objects.begin(); o != r->objects.end(); ++o) + { + _objectCache.remove(o->id); + } _adapterCache.get(r->id, false)->disableReplication(); } const ReplicatedAdapterDescriptorSeq& newAdpts = newApp.getInstance().replicatedAdapters; for(r = newAdpts.begin(); r != newAdpts.end(); ++r) { _adapterCache.get(r->id, true)->enableReplication(r->loadBalancing); + for(ObjectDescriptorSeq::const_iterator o = r->objects.begin(); o != r->objects.end(); ++o) + { + _objectCache.add(r->id, "", *o); + } } map<string, ServerInfo> oldServers = oldApp.getServerInfos(); diff --git a/cpp/src/IceGrid/LocatorI.cpp b/cpp/src/IceGrid/LocatorI.cpp index ff26f903d69..1ca0236d195 100644 --- a/cpp/src/IceGrid/LocatorI.cpp +++ b/cpp/src/IceGrid/LocatorI.cpp @@ -225,6 +225,12 @@ LocatorI::Request::exception() void LocatorI::Request::response(const Ice::ObjectPrx& proxy) { + if(!proxy) + { + exception(); + return; + } + Lock sync(*this); _proxies.push_back(proxy->ice_newIdentity(Ice::stringToIdentity("dummy"))); diff --git a/cpp/src/IceGrid/Parser.cpp b/cpp/src/IceGrid/Parser.cpp index af3f62da8e9..0e49f5541f2 100644 --- a/cpp/src/IceGrid/Parser.cpp +++ b/cpp/src/IceGrid/Parser.cpp @@ -442,6 +442,7 @@ Parser::instantiateServerTemplate(const list<string>& args) nodeUpdate.name = node; nodeUpdate.serverInstances.push_back(desc); ApplicationUpdateDescriptor update; + update.name = application; update.nodes.push_back(nodeUpdate); _admin->updateApplication(update); } diff --git a/cpp/src/IceGrid/ServerI.cpp b/cpp/src/IceGrid/ServerI.cpp index 93f9c5e9d0e..659bf108373 100644 --- a/cpp/src/IceGrid/ServerI.cpp +++ b/cpp/src/IceGrid/ServerI.cpp @@ -466,7 +466,7 @@ void ServerI::setProcess(const ::Ice::ProcessPrx& proc, const ::Ice::Current&) { IceUtil::Monitor< ::IceUtil::Mutex>::Lock sync(*this); - _process = proc; + _process = Ice::ProcessPrx::uncheckedCast(proc->ice_timeout(_deactivationTimeout * 1000)); notifyAll(); } |