summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/ReplicaSessionManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceGrid/ReplicaSessionManager.cpp')
-rw-r--r--cpp/src/IceGrid/ReplicaSessionManager.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/cpp/src/IceGrid/ReplicaSessionManager.cpp b/cpp/src/IceGrid/ReplicaSessionManager.cpp
index 60fde710b13..6feb9f41403 100644
--- a/cpp/src/IceGrid/ReplicaSessionManager.cpp
+++ b/cpp/src/IceGrid/ReplicaSessionManager.cpp
@@ -143,7 +143,13 @@ public:
string failure;
try
{
- _database->addObject(info, true);
+ const Ice::Identity& id = info.proxy->ice_getIdentity();
+ if(id.category != _database->getInstanceName() || id.name.find("Node-") != 0)
+ {
+ // Don't replicate node well-known objects. These objects are
+ // maintained by each replica with each node session.
+ _database->addObject(info, true);
+ }
}
catch(const ObjectExistsException& ex)
{
@@ -161,7 +167,13 @@ public:
string failure;
try
{
- _database->addObject(info, true);
+ const Ice::Identity& id = info.proxy->ice_getIdentity();
+ if(id.category != _database->getInstanceName() || id.name.find("Node-") != 0)
+ {
+ // Don't replicate node well-known objects. These objects are
+ // maintained by each replica with each node session.
+ _database->addObject(info, true);
+ }
}
catch(const DeploymentException& ex)
{
@@ -178,7 +190,12 @@ public:
string failure;
try
{
- _database->removeObject(id);
+ if(id.category != _database->getInstanceName() || id.name.find("Node-") != 0)
+ {
+ // Don't replicate node well-known objects. These objects are
+ // maintained by each replica with each node session.
+ _database->removeObject(id);
+ }
}
catch(const DeploymentException& ex)
{