summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-09-19 11:33:43 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-09-19 11:33:43 +0000
commit642a066529ba18a12e2a5e6f91b4c67bb4c3d6e3 (patch)
treef7eaa7d966e2b90979b40dc676c5b5528bcdd60c /cpp/src
parentAdded simple demo (diff)
downloadice-642a066529ba18a12e2a5e6f91b4c67bb4c3d6e3.tar.bz2
ice-642a066529ba18a12e2a5e6f91b4c67bb4c3d6e3.tar.xz
ice-642a066529ba18a12e2a5e6f91b4c67bb4c3d6e3.zip
Bug fixes
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/IceGrid/Activator.cpp2
-rw-r--r--cpp/src/IceGrid/AdapterCache.cpp12
-rw-r--r--cpp/src/IceGrid/Database.cpp8
-rw-r--r--cpp/src/IceGrid/LocatorI.cpp6
-rw-r--r--cpp/src/IceGrid/Parser.cpp1
-rw-r--r--cpp/src/IceGrid/ServerI.cpp2
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();
}