summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/Database.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-09-26 14:12:55 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-09-26 14:12:55 +0000
commita22bf87583396f5720e3eb2c6fe555ca2da9cb89 (patch)
tree3afc24e9347693e57f01db2b6fcc2a9142baca66 /cpp/src/IceGrid/Database.cpp
parentBug 1379. (diff)
downloadice-a22bf87583396f5720e3eb2c6fe555ca2da9cb89.tar.bz2
ice-a22bf87583396f5720e3eb2c6fe555ca2da9cb89.tar.xz
ice-a22bf87583396f5720e3eb2c6fe555ca2da9cb89.zip
Fixes to allow upgrade of a slave to a master
Diffstat (limited to 'cpp/src/IceGrid/Database.cpp')
-rw-r--r--cpp/src/IceGrid/Database.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp
index c000b00b455..df7c4130c29 100644
--- a/cpp/src/IceGrid/Database.cpp
+++ b/cpp/src/IceGrid/Database.cpp
@@ -1337,6 +1337,10 @@ Ice::ObjectPrx
Database::getObjectByType(const string& type)
{
Ice::ObjectProxySeq objs = getObjectsByType(type);
+ if(objs.empty())
+ {
+ return 0;
+ }
return objs[IceUtil::random(static_cast<int>(objs.size()))];
}
@@ -1344,6 +1348,11 @@ Ice::ObjectPrx
Database::getObjectByTypeOnLeastLoadedNode(const string& type, LoadSample sample)
{
Ice::ObjectProxySeq objs = getObjectsByType(type);
+ if(objs.empty())
+ {
+ return 0;
+ }
+
RandomNumberGenerator rng;
random_shuffle(objs.begin(), objs.end(), rng);
vector<pair<Ice::ObjectPrx, float> > objectsWithLoad;
@@ -1371,17 +1380,12 @@ Ice::ObjectProxySeq
Database::getObjectsByType(const string& type)
{
Ice::ObjectProxySeq proxies = _objectCache.getObjectsByType(type);
-
Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
IdentityObjectInfoDict objects(connection, _objectDbName);
for(IdentityObjectInfoDict::const_iterator p = objects.findByType(type); p != objects.end(); ++p)
{
proxies.push_back(p->second.proxy);
}
- if(proxies.empty())
- {
- throw ObjectNotRegisteredException();
- }
return proxies;
}
@@ -1411,7 +1415,6 @@ ObjectInfoSeq
Database::getAllObjectInfos(const string& expression)
{
ObjectInfoSeq infos = _objectCache.getAll(expression);
-
Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
IdentityObjectInfoDict objects(connection, _objectDbName);
for(IdentityObjectInfoDict::const_iterator p = objects.begin(); p != objects.end(); ++p)
@@ -1428,7 +1431,6 @@ ObjectInfoSeq
Database::getObjectInfosByType(const string& type)
{
ObjectInfoSeq infos = _objectCache.getAllByType(type);
-
Freeze::ConnectionPtr connection = Freeze::createConnection(_communicator, _envName);
IdentityObjectInfoDict objects(connection, _objectDbName);
for(IdentityObjectInfoDict::const_iterator p = objects.findByType(type); p != objects.end(); ++p)
@@ -1474,10 +1476,6 @@ Database::getInternalObjectsByType(const string& type)
{
proxies.push_back(p->second.proxy);
}
- if(proxies.empty())
- {
- throw ObjectNotRegisteredException();
- }
return proxies;
}