summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/Database.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-10-27 06:32:41 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-10-27 06:32:41 +0000
commitcacf9b72b4a2ac0c82957d626db0d13ed4b5eb01 (patch)
tree97fd9f1b6d1485bd724002b624777b919b8b7f66 /cpp/src/IceGrid/Database.cpp
parentfix windows compilation problem. (diff)
downloadice-cacf9b72b4a2ac0c82957d626db0d13ed4b5eb01.tar.bz2
ice-cacf9b72b4a2ac0c82957d626db0d13ed4b5eb01.tar.xz
ice-cacf9b72b4a2ac0c82957d626db0d13ed4b5eb01.zip
Fix
Diffstat (limited to 'cpp/src/IceGrid/Database.cpp')
-rw-r--r--cpp/src/IceGrid/Database.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp
index 6819e1c7b12..55c0f36bf45 100644
--- a/cpp/src/IceGrid/Database.cpp
+++ b/cpp/src/IceGrid/Database.cpp
@@ -176,11 +176,6 @@ Database::Database(const Ice::ObjectAdapterPtr& adapter,
_serial(0)
{
//
- // Register a default servant to manage manually registered object adapters.
- //
- _internalAdapter->addServantLocator(new AdapterServantLocator(this), "IceGridAdapter");
-
- //
// Cache the servers & adapters.
//
ServerEntrySeq entries;
@@ -196,11 +191,21 @@ Database::Database(const Ice::ObjectAdapterPtr& adapter,
warn << "invalid application `" << p->first << "':\n" << ex.reason;
}
}
-
+
_serverCache.setTraceLevels(_traceLevels);
_nodeCache.setTraceLevels(_traceLevels);
_adapterCache.setTraceLevels(_traceLevels);
_objectCache.setTraceLevels(_traceLevels);
+
+ //
+ // Register a default servant to manage manually registered object adapters.
+ //
+ // NOTE: This must be done only once we're sure this constructor
+ // won't throw. The servant locator is holding a handle on this
+ // object and if an exception was thrown a bogus database object
+ // won't be referenced from the servant locator.
+ //
+ _internalAdapter->addServantLocator(new AdapterServantLocator(this), "IceGridAdapter");
}
Database::~Database()