diff options
author | Benoit Foucher <benoit@zeroc.com> | 2006-09-26 14:12:55 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2006-09-26 14:12:55 +0000 |
commit | a22bf87583396f5720e3eb2c6fe555ca2da9cb89 (patch) | |
tree | 3afc24e9347693e57f01db2b6fcc2a9142baca66 /cpp/src/IceGrid/Database.cpp | |
parent | Bug 1379. (diff) | |
download | ice-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.cpp | 20 |
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; } |