diff options
Diffstat (limited to 'cpp/src/IceGrid/ReplicaSessionManager.cpp')
-rw-r--r-- | cpp/src/IceGrid/ReplicaSessionManager.cpp | 23 |
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) { |