diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp index 5e5ff94..74c2181 100644 --- a/cpp/src/IceGrid/Database.cpp +++ b/cpp/src/IceGrid/Database.cpp @@ -42,6 +42,30 @@ struct ObjectLoadCI : binary_function&, pairsecond); } - else + else if(isServerUpdated(p->second, q->second)) { _serverCache.remove(p->first, false); // Don't destroy the server if it was updated. load.push_back(p->second); } + else + { + ServerEntryPtr server = _serverCache.get(p->first); + server->update(q->second); // Just update the server revision on the node. + entries.push_back(server); + } } for(p = oldServers.begin(); p != oldServers.end(); ++p) { diff --git a/cpp/src/IceGrid/ServerCache.cpp b/cpp/src/IceGrid/ServerCache.cpp index 2b23d51..5a8cef4 100644 --- a/cpp/src/IceGrid/ServerCache.cpp +++ b/cpp/src/IceGrid/ServerCache.cpp @@ -287,7 +287,12 @@ ServerEntry::update(const ServerInfo& info) _load = descriptor; _loaded.reset(0); - _allocatable = info.descriptor->allocatable || info.descriptor->activation == "session"; + _allocatable = info.descriptor->allocatable; + if(info.descriptor->activation == "session") + { + _allocatable = true; + _load->sessionId = _session ? _session->getId() : ""; + } } void