summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/NodeSessionI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceGrid/NodeSessionI.cpp')
-rw-r--r--cpp/src/IceGrid/NodeSessionI.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/cpp/src/IceGrid/NodeSessionI.cpp b/cpp/src/IceGrid/NodeSessionI.cpp
index d25e7bca653..83bcbb25d1a 100644
--- a/cpp/src/IceGrid/NodeSessionI.cpp
+++ b/cpp/src/IceGrid/NodeSessionI.cpp
@@ -156,8 +156,23 @@ NodeSessionI::NodeSessionI(const DatabasePtr& database,
Ice::ObjectPrx prx = _database->getInternalAdapter()->addWithUUID(this)->ice_timeout(timeout * 1000);
_proxy = NodeSessionPrx::uncheckedCast(prx);
}
+ catch(const NodeActiveException&)
+ {
+ __setNoDelete(false);
+ throw;
+ }
catch(...)
{
+ try
+ {
+ _database->removeInternalObject(_node->ice_getIdentity());
+ }
+ catch(const ObjectNotRegisteredException&)
+ {
+ }
+
+ _database->getNode(info->name)->setSession(0);
+
__setNoDelete(false);
throw;
}