summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-09-12 09:01:35 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-09-12 09:01:35 +0000
commitd89514da858be06f7e44129bcd6675a46181208e (patch)
tree662073ca1e8a9b6e56e9914087da66a824b88d6c /cpp
parentMinor Makefile tweak. (diff)
downloadice-d89514da858be06f7e44129bcd6675a46181208e.tar.bz2
ice-d89514da858be06f7e44129bcd6675a46181208e.tar.xz
ice-d89514da858be06f7e44129bcd6675a46181208e.zip
Fixes
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/IceGrid/.depend4
-rw-r--r--cpp/src/IceGrid/Allocatable.cpp189
-rw-r--r--cpp/src/IceGrid/Allocatable.h5
-rw-r--r--cpp/src/IceGrid/Cache.h4
-rw-r--r--cpp/src/IceGrid/Database.cpp56
-rw-r--r--cpp/src/IceGrid/Database.h6
-rw-r--r--cpp/src/IceGrid/IceGridNode.cpp25
-rw-r--r--cpp/src/IceGrid/Internal.ice19
-rw-r--r--cpp/src/IceGrid/InternalRegistryI.cpp31
-rw-r--r--cpp/src/IceGrid/LocatorRegistryI.cpp43
-rw-r--r--cpp/src/IceGrid/NodeCache.cpp37
-rw-r--r--cpp/src/IceGrid/NodeCache.h2
-rw-r--r--cpp/src/IceGrid/NodeI.cpp40
-rw-r--r--cpp/src/IceGrid/NodeI.h4
-rw-r--r--cpp/src/IceGrid/NodeSessionI.cpp25
-rw-r--r--cpp/src/IceGrid/NodeSessionI.h2
-rw-r--r--cpp/src/IceGrid/NodeSessionManager.cpp52
-rw-r--r--cpp/src/IceGrid/NodeSessionManager.h2
-rw-r--r--cpp/src/IceGrid/ReapThread.cpp6
-rw-r--r--cpp/src/IceGrid/RegistryI.cpp6
-rw-r--r--cpp/src/IceGrid/ReplicaCache.cpp130
-rw-r--r--cpp/src/IceGrid/ReplicaCache.h11
-rw-r--r--cpp/src/IceGrid/ReplicaSessionI.cpp4
-rw-r--r--cpp/src/IceGrid/ReplicaSessionI.h2
-rw-r--r--cpp/src/IceGrid/ReplicaSessionManager.cpp122
-rw-r--r--cpp/src/IceGrid/ReplicaSessionManager.h2
-rw-r--r--cpp/src/IceGrid/ServerCache.cpp52
-rw-r--r--cpp/src/IceGrid/ServerCache.h3
-rw-r--r--cpp/src/IceGrid/ServerI.cpp137
-rw-r--r--cpp/src/IceGrid/ServerI.h3
-rw-r--r--cpp/src/IceGrid/SessionManager.h29
-rw-r--r--cpp/src/IceGrid/Topics.cpp180
-rw-r--r--cpp/test/IceGrid/activation/AllTests.cpp16
33 files changed, 926 insertions, 323 deletions
diff --git a/cpp/src/IceGrid/.depend b/cpp/src/IceGrid/.depend
index 16a87a810d0..3d904739cfc 100644
--- a/cpp/src/IceGrid/.depend
+++ b/cpp/src/IceGrid/.depend
@@ -32,7 +32,7 @@ InternalRegistryI$(OBJEXT): InternalRegistryI.cpp ../../include/Ice/Ice.h ../../
StringApplicationInfoDict$(OBJEXT): StringApplicationInfoDict.cpp ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/GCCountMap.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/Ice/StringConverter.h ../../include/IceUtil/Unicode.h ../IceGrid/StringApplicationInfoDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/GCShared.h ../../include/Ice/GC.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/Ice/LoggerF.h ../../include/Ice/StreamF.h ../../include/Ice/StatsF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/FacetMap.h ../../include/Ice/Locator.h ../../include/Ice/ProcessF.h ../../include/Ice/ServantLocator.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Connection.h ../../include/Ice/Functional.h ../../include/IceUtil/Functional.h ../../include/Ice/Stream.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IceGrid/Internal.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Admin.h ../../include/Ice/SliceChecksumDict.h ../../include/IceGrid/Exception.h ../../include/IceGrid/Descriptor.h ../../include/IceGrid/Observer.h ../../include/IceGrid/Registry.h ../../include/IceGrid/Session.h
IdentityObjectInfoDict$(OBJEXT): IdentityObjectInfoDict.cpp ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/GCCountMap.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/Ice/StringConverter.h ../../include/IceUtil/Unicode.h ../IceGrid/IdentityObjectInfoDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/GCShared.h ../../include/Ice/GC.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/Ice/LoggerF.h ../../include/Ice/StreamF.h ../../include/Ice/StatsF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/FacetMap.h ../../include/Ice/Locator.h ../../include/Ice/ProcessF.h ../../include/Ice/ServantLocator.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Connection.h ../../include/Ice/Functional.h ../../include/IceUtil/Functional.h ../../include/Ice/Stream.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IceGrid/Internal.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Admin.h ../../include/Ice/SliceChecksumDict.h ../../include/IceGrid/Exception.h ../../include/IceGrid/Descriptor.h ../../include/IceGrid/Observer.h ../../include/IceGrid/Registry.h ../../include/IceGrid/Session.h
StringAdapterInfoDict$(OBJEXT): StringAdapterInfoDict.cpp ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ObjectF.h ../../include/Ice/GCCountMap.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/Ice/StringConverter.h ../../include/IceUtil/Unicode.h ../IceGrid/StringAdapterInfoDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/GCShared.h ../../include/Ice/GC.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/PropertiesF.h ../../include/Ice/LoggerF.h ../../include/Ice/StreamF.h ../../include/Ice/StatsF.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/FacetMap.h ../../include/Ice/Locator.h ../../include/Ice/ProcessF.h ../../include/Ice/ServantLocator.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Connection.h ../../include/Ice/Functional.h ../../include/IceUtil/Functional.h ../../include/Ice/Stream.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../../include/IceGrid/Admin.h ../../include/Ice/SliceChecksumDict.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Exception.h ../../include/IceGrid/Descriptor.h
-Database$(OBJEXT): Database.cpp ../../include/IceUtil/StringUtil.h ../../include/IceUtil/Config.h ../../include/IceUtil/Random.h ../../include/IceUtil/Exception.h ../../include/IceUtil/UUID.h ../../include/Freeze/Freeze.h ../../include/Freeze/Initialize.h ../../include/Ice/Ice.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/Config.h ../../include/Ice/GCShared.h ../../include/Ice/GCCountMap.h ../../include/Ice/GC.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/LoggerF.h ../../include/Ice/StreamF.h ../../include/Ice/StatsF.h ../../include/Ice/StringConverter.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/IceUtil/Unicode.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/FacetMap.h ../../include/Ice/Locator.h ../../include/Ice/ProcessF.h ../../include/Ice/ServantLocator.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Connection.h ../../include/Ice/Functional.h ../../include/IceUtil/Functional.h ../../include/Ice/Stream.h ../../include/Freeze/EvictorF.h ../../include/Freeze/ConnectionF.h ../../include/Freeze/Index.h ../../include/Freeze/DB.h ../../include/Freeze/Transaction.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../../include/Freeze/Map.h ../../include/Freeze/Connection.h ../../include/Freeze/TransactionHolder.h ../IceGrid/Database.h ../../include/IceGrid/Admin.h ../../include/Ice/SliceChecksumDict.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Exception.h ../../include/IceGrid/Descriptor.h ../IceGrid/Internal.h ../../include/IceGrid/Observer.h ../../include/IceGrid/Registry.h ../../include/IceGrid/Session.h ../IceGrid/StringApplicationInfoDict.h ../IceGrid/IdentityObjectInfoDict.h ../IceGrid/StringAdapterInfoDict.h ../IceGrid/ServerCache.h ../../include/IceGrid/Query.h ../IceGrid/Allocatable.h ../IceGrid/WaitQueue.h ../IceGrid/Cache.h ../IceGrid/Util.h ../IceGrid/TraceLevels.h ../IceGrid/NodeCache.h ../IceGrid/ReplicaCache.h ../../include/IceStorm/IceStorm.h ../IceGrid/ObjectCache.h ../IceGrid/AllocatableObjectCache.h ../IceGrid/AdapterCache.h ../IceGrid/Topics.h ../IceGrid/DescriptorHelper.h ../../include/IceUtil/OutputUtil.h ../../include/IceXML/Parser.h ../IceGrid/NodeSessionI.h ../IceGrid/ReplicaSessionI.h
+Database$(OBJEXT): Database.cpp ../../include/IceUtil/StringUtil.h ../../include/IceUtil/Config.h ../../include/IceUtil/Random.h ../../include/IceUtil/Exception.h ../../include/Freeze/Freeze.h ../../include/Freeze/Initialize.h ../../include/Ice/Ice.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/Config.h ../../include/Ice/GCShared.h ../../include/Ice/GCCountMap.h ../../include/Ice/GC.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/LoggerF.h ../../include/Ice/StreamF.h ../../include/Ice/StatsF.h ../../include/Ice/StringConverter.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/IceUtil/Unicode.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/FacetMap.h ../../include/Ice/Locator.h ../../include/Ice/ProcessF.h ../../include/Ice/ServantLocator.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Connection.h ../../include/Ice/Functional.h ../../include/IceUtil/Functional.h ../../include/Ice/Stream.h ../../include/Freeze/EvictorF.h ../../include/Freeze/ConnectionF.h ../../include/Freeze/Index.h ../../include/Freeze/DB.h ../../include/Freeze/Transaction.h ../../include/Freeze/Evictor.h ../../include/Freeze/Exception.h ../../include/Freeze/Map.h ../../include/Freeze/Connection.h ../../include/Freeze/TransactionHolder.h ../IceGrid/Database.h ../../include/IceGrid/Admin.h ../../include/Ice/SliceChecksumDict.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Exception.h ../../include/IceGrid/Descriptor.h ../IceGrid/Internal.h ../../include/IceGrid/Observer.h ../../include/IceGrid/Registry.h ../../include/IceGrid/Session.h ../IceGrid/StringApplicationInfoDict.h ../IceGrid/IdentityObjectInfoDict.h ../IceGrid/StringAdapterInfoDict.h ../IceGrid/ServerCache.h ../../include/IceGrid/Query.h ../IceGrid/Allocatable.h ../IceGrid/WaitQueue.h ../IceGrid/Cache.h ../IceGrid/Util.h ../IceGrid/TraceLevels.h ../IceGrid/NodeCache.h ../IceGrid/ReplicaCache.h ../../include/IceStorm/IceStorm.h ../IceGrid/ObjectCache.h ../IceGrid/AllocatableObjectCache.h ../IceGrid/AdapterCache.h ../IceGrid/Topics.h ../IceGrid/DescriptorHelper.h ../../include/IceUtil/OutputUtil.h ../../include/IceXML/Parser.h ../IceGrid/NodeSessionI.h ../IceGrid/ReplicaSessionI.h
Allocatable$(OBJEXT): Allocatable.cpp ../IceGrid/Allocatable.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Time.h ../IceGrid/WaitQueue.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceGrid/Session.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/GCCountMap.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/StreamF.h ../../include/Ice/CommunicatorF.h ../../include/Ice/Object.h ../../include/Ice/GCShared.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/Ice/StringConverter.h ../../include/IceUtil/Unicode.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Glacier2/Session.h ../../include/Ice/BuiltinSequences.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Exception.h ../IceGrid/SessionI.h ../IceGrid/ReapThread.h ../IceGrid/SessionServantLocatorI.h ../../include/Ice/ServantLocator.h
AdapterCache$(OBJEXT): AdapterCache.cpp ../../include/IceUtil/Random.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LoggerF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/GCCountMap.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/Locator.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/StreamF.h ../../include/Ice/CommunicatorF.h ../../include/Ice/Object.h ../../include/Ice/GCShared.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/Ice/StringConverter.h ../../include/IceUtil/Unicode.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/ProcessF.h ../IceGrid/AdapterCache.h ../IceGrid/Cache.h ../IceGrid/Util.h ../../include/IceGrid/Descriptor.h ../../include/Ice/BuiltinSequences.h ../../include/IceUtil/StringUtil.h ../../include/IceGrid/Exception.h ../IceGrid/TraceLevels.h ../../include/IceGrid/Query.h ../IceGrid/Internal.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Admin.h ../../include/Ice/SliceChecksumDict.h ../../include/IceGrid/Observer.h ../../include/IceGrid/Registry.h ../../include/IceGrid/Session.h ../IceGrid/NodeSessionI.h ../IceGrid/ServerCache.h ../IceGrid/Allocatable.h ../IceGrid/WaitQueue.h ../../include/IceUtil/Thread.h ../IceGrid/NodeCache.h ../IceGrid/SessionI.h ../IceGrid/ReapThread.h ../IceGrid/SessionServantLocatorI.h ../../include/Ice/ServantLocator.h
ObjectCache$(OBJEXT): ObjectCache.cpp ../../include/IceUtil/Random.h ../../include/IceUtil/Config.h ../../include/IceUtil/Exception.h ../../include/Ice/Communicator.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/GCCountMap.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/StreamF.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LoggerF.h ../../include/Ice/StatsF.h ../../include/Ice/PropertiesF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/LoggerUtil.h ../../include/Ice/LocalException.h ../../include/Ice/BuiltinSequences.h ../IceGrid/ObjectCache.h ../IceGrid/Cache.h ../IceGrid/Util.h ../../include/IceGrid/Descriptor.h ../../include/Ice/Object.h ../../include/Ice/GCShared.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/Ice/StringConverter.h ../../include/IceUtil/Unicode.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/IceUtil/StringUtil.h ../../include/IceGrid/Exception.h ../../include/Ice/UserExceptionFactory.h ../IceGrid/TraceLevels.h ../IceGrid/Internal.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/ProcessF.h ../../include/Ice/Locator.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Admin.h ../../include/Ice/SliceChecksumDict.h ../../include/IceGrid/Observer.h ../../include/IceGrid/Registry.h ../../include/IceGrid/Session.h ../IceGrid/NodeSessionI.h ../IceGrid/ServerCache.h ../../include/IceGrid/Query.h ../IceGrid/Allocatable.h ../IceGrid/WaitQueue.h ../../include/IceUtil/Thread.h ../IceGrid/SessionI.h ../IceGrid/ReapThread.h ../IceGrid/SessionServantLocatorI.h ../../include/Ice/ServantLocator.h
@@ -42,7 +42,7 @@ NodeCache$(OBJEXT): NodeCache.cpp ../../include/IceUtil/Functional.h ../../inclu
ReplicaCache$(OBJEXT): ReplicaCache.cpp ../../include/Ice/Communicator.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/GCCountMap.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/StreamF.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LoggerF.h ../../include/Ice/StatsF.h ../../include/Ice/PropertiesF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/LocalException.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/LoggerUtil.h ../IceGrid/ReplicaCache.h ../IceGrid/Cache.h ../IceGrid/Util.h ../../include/IceGrid/Descriptor.h ../../include/Ice/Object.h ../../include/Ice/GCShared.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/Ice/StringConverter.h ../../include/IceUtil/Unicode.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/Direct.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/IceUtil/StringUtil.h ../../include/IceGrid/Exception.h ../../include/Ice/UserExceptionFactory.h ../../include/IceUtil/Random.h ../IceGrid/TraceLevels.h ../IceGrid/Internal.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/IncomingAsync.h ../../include/Ice/ProcessF.h ../../include/Ice/Locator.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Admin.h ../../include/Ice/SliceChecksumDict.h ../../include/IceGrid/Observer.h ../../include/IceGrid/Registry.h ../../include/IceGrid/Session.h ../../include/IceStorm/IceStorm.h ../IceGrid/ReplicaSessionI.h ../IceGrid/Topics.h ../IceGrid/StringApplicationInfoDict.h ../../include/Freeze/Map.h ../../include/Ice/Ice.h ../../include/Ice/GC.h ../../include/IceUtil/Thread.h ../../include/Ice/Initialize.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/Stats.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/FacetMap.h ../../include/Ice/ServantLocator.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Connection.h ../../include/Ice/Functional.h ../../include/IceUtil/Functional.h ../../include/Ice/Stream.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IceGrid/StringAdapterInfoDict.h ../IceGrid/IdentityObjectInfoDict.h
LocatorI$(OBJEXT): LocatorI.cpp ../../include/Ice/Ice.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/IceUtil/Config.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/GCShared.h ../../include/Ice/GCCountMap.h ../../include/Ice/GC.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/LoggerF.h ../../include/Ice/StreamF.h ../../include/Ice/StatsF.h ../../include/Ice/StringConverter.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/IceUtil/Unicode.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/FacetMap.h ../../include/Ice/Locator.h ../../include/Ice/ProcessF.h ../../include/Ice/ServantLocator.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Connection.h ../../include/Ice/Functional.h ../../include/IceUtil/Functional.h ../../include/Ice/Stream.h ../IceGrid/LocatorI.h ../IceGrid/Internal.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Admin.h ../../include/Ice/SliceChecksumDict.h ../../include/IceGrid/Exception.h ../../include/IceGrid/Descriptor.h ../../include/IceGrid/Observer.h ../../include/IceGrid/Registry.h ../../include/IceGrid/Session.h ../IceGrid/Database.h ../../include/Freeze/ConnectionF.h ../IceGrid/StringApplicationInfoDict.h ../../include/Freeze/Map.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IceGrid/IdentityObjectInfoDict.h ../IceGrid/StringAdapterInfoDict.h ../IceGrid/ServerCache.h ../../include/IceGrid/Query.h ../IceGrid/Allocatable.h ../IceGrid/WaitQueue.h ../IceGrid/Cache.h ../IceGrid/Util.h ../../include/IceUtil/StringUtil.h ../../include/IceUtil/Random.h ../IceGrid/TraceLevels.h ../IceGrid/NodeCache.h ../IceGrid/ReplicaCache.h ../../include/IceStorm/IceStorm.h ../IceGrid/ObjectCache.h ../IceGrid/AllocatableObjectCache.h ../IceGrid/AdapterCache.h ../IceGrid/Topics.h ../IceGrid/SessionI.h ../IceGrid/ReapThread.h ../IceGrid/SessionServantLocatorI.h
LocatorRegistryI$(OBJEXT): LocatorRegistryI.cpp ../../include/Ice/Ice.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/IceUtil/Config.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/GCShared.h ../../include/Ice/GCCountMap.h ../../include/Ice/GC.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/LoggerF.h ../../include/Ice/StreamF.h ../../include/Ice/StatsF.h ../../include/Ice/StringConverter.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/IceUtil/Unicode.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/FacetMap.h ../../include/Ice/Locator.h ../../include/Ice/ProcessF.h ../../include/Ice/ServantLocator.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Connection.h ../../include/Ice/Functional.h ../../include/IceUtil/Functional.h ../../include/Ice/Stream.h ../IceGrid/LocatorRegistryI.h ../IceGrid/Internal.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Admin.h ../../include/Ice/SliceChecksumDict.h ../../include/IceGrid/Exception.h ../../include/IceGrid/Descriptor.h ../../include/IceGrid/Observer.h ../../include/IceGrid/Registry.h ../../include/IceGrid/Session.h ../IceGrid/ReplicaSessionManager.h ../IceGrid/SessionManager.h ../../include/IceGrid/Query.h ../IceGrid/Database.h ../../include/Freeze/ConnectionF.h ../IceGrid/StringApplicationInfoDict.h ../../include/Freeze/Map.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IceGrid/IdentityObjectInfoDict.h ../IceGrid/StringAdapterInfoDict.h ../IceGrid/ServerCache.h ../IceGrid/Allocatable.h ../IceGrid/WaitQueue.h ../IceGrid/Cache.h ../IceGrid/Util.h ../../include/IceUtil/StringUtil.h ../../include/IceUtil/Random.h ../IceGrid/TraceLevels.h ../IceGrid/NodeCache.h ../IceGrid/ReplicaCache.h ../../include/IceStorm/IceStorm.h ../IceGrid/ObjectCache.h ../IceGrid/AllocatableObjectCache.h ../IceGrid/AdapterCache.h ../IceGrid/Topics.h
-AdminI$(OBJEXT): AdminI.cpp ../../include/Ice/Ice.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/IceUtil/Config.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/GCShared.h ../../include/Ice/GCCountMap.h ../../include/Ice/GC.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/LoggerF.h ../../include/Ice/StreamF.h ../../include/Ice/StatsF.h ../../include/Ice/StringConverter.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/IceUtil/Unicode.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/FacetMap.h ../../include/Ice/Locator.h ../../include/Ice/ProcessF.h ../../include/Ice/ServantLocator.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Connection.h ../../include/Ice/Functional.h ../../include/IceUtil/Functional.h ../../include/Ice/Stream.h ../Ice/TraceUtil.h ../Ice/TraceLevelsF.h ../../include/Ice/SliceChecksums.h ../../include/Ice/SliceChecksumDict.h ../IceGrid/AdminI.h ../../include/IceGrid/Admin.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Exception.h ../../include/IceGrid/Descriptor.h ../IceGrid/RegistryI.h ../../include/IceGrid/Registry.h ../../include/IceGrid/Session.h ../../include/IceGrid/Query.h ../IceGrid/Internal.h ../../include/IceGrid/Observer.h ../IceGrid/PlatformInfo.h ../IceGrid/ReplicaSessionManager.h ../IceGrid/SessionManager.h ../../include/Glacier2/PermissionsVerifierF.h ../../include/IceStorm/Service.h ../../include/IceBox/IceBox.h ../../include/IceStorm/IceStorm.h ../IceGrid/Database.h ../../include/Freeze/ConnectionF.h ../IceGrid/StringApplicationInfoDict.h ../../include/Freeze/Map.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IceGrid/IdentityObjectInfoDict.h ../IceGrid/StringAdapterInfoDict.h ../IceGrid/ServerCache.h ../IceGrid/Allocatable.h ../IceGrid/WaitQueue.h ../IceGrid/Cache.h ../IceGrid/Util.h ../../include/IceUtil/StringUtil.h ../../include/IceUtil/Random.h ../IceGrid/TraceLevels.h ../IceGrid/NodeCache.h ../IceGrid/ReplicaCache.h ../IceGrid/ObjectCache.h ../IceGrid/AllocatableObjectCache.h ../IceGrid/AdapterCache.h ../IceGrid/Topics.h ../IceGrid/DescriptorParser.h ../IceGrid/DescriptorHelper.h ../../include/IceUtil/OutputUtil.h ../../include/IceXML/Parser.h ../IceGrid/AdminSessionI.h ../IceGrid/SessionI.h ../IceGrid/ReapThread.h ../IceGrid/SessionServantLocatorI.h
+AdminI$(OBJEXT): AdminI.cpp ../../include/IceUtil/UUID.h ../../include/IceUtil/Config.h ../../include/Ice/Ice.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/GCShared.h ../../include/Ice/GCCountMap.h ../../include/Ice/GC.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/LoggerF.h ../../include/Ice/StreamF.h ../../include/Ice/StatsF.h ../../include/Ice/StringConverter.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/IceUtil/Unicode.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/FacetMap.h ../../include/Ice/Locator.h ../../include/Ice/ProcessF.h ../../include/Ice/ServantLocator.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Connection.h ../../include/Ice/Functional.h ../../include/IceUtil/Functional.h ../../include/Ice/Stream.h ../Ice/TraceUtil.h ../Ice/TraceLevelsF.h ../../include/Ice/SliceChecksums.h ../../include/Ice/SliceChecksumDict.h ../IceGrid/AdminI.h ../../include/IceGrid/Admin.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Exception.h ../../include/IceGrid/Descriptor.h ../IceGrid/RegistryI.h ../../include/IceGrid/Registry.h ../../include/IceGrid/Session.h ../../include/IceGrid/Query.h ../IceGrid/Internal.h ../../include/IceGrid/Observer.h ../IceGrid/PlatformInfo.h ../IceGrid/ReplicaSessionManager.h ../IceGrid/SessionManager.h ../../include/Glacier2/PermissionsVerifierF.h ../../include/IceStorm/Service.h ../../include/IceBox/IceBox.h ../../include/IceStorm/IceStorm.h ../IceGrid/Database.h ../../include/Freeze/ConnectionF.h ../IceGrid/StringApplicationInfoDict.h ../../include/Freeze/Map.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IceGrid/IdentityObjectInfoDict.h ../IceGrid/StringAdapterInfoDict.h ../IceGrid/ServerCache.h ../IceGrid/Allocatable.h ../IceGrid/WaitQueue.h ../IceGrid/Cache.h ../IceGrid/Util.h ../../include/IceUtil/StringUtil.h ../../include/IceUtil/Random.h ../IceGrid/TraceLevels.h ../IceGrid/NodeCache.h ../IceGrid/ReplicaCache.h ../IceGrid/ObjectCache.h ../IceGrid/AllocatableObjectCache.h ../IceGrid/AdapterCache.h ../IceGrid/Topics.h ../IceGrid/DescriptorParser.h ../IceGrid/DescriptorHelper.h ../../include/IceUtil/OutputUtil.h ../../include/IceXML/Parser.h ../IceGrid/AdminSessionI.h ../IceGrid/SessionI.h ../IceGrid/ReapThread.h ../IceGrid/SessionServantLocatorI.h
Util$(OBJEXT): Util.cpp ../../include/Ice/Ice.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/IceUtil/Config.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/GCShared.h ../../include/Ice/GCCountMap.h ../../include/Ice/GC.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/LoggerF.h ../../include/Ice/StreamF.h ../../include/Ice/StatsF.h ../../include/Ice/StringConverter.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/IceUtil/Unicode.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/FacetMap.h ../../include/Ice/Locator.h ../../include/Ice/ProcessF.h ../../include/Ice/ServantLocator.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Connection.h ../../include/Ice/Functional.h ../../include/IceUtil/Functional.h ../../include/Ice/Stream.h ../../include/IcePatch2/Util.h ../../include/IcePatch2/FileInfo.h ../IceGrid/Util.h ../../include/IceGrid/Descriptor.h ../../include/IceUtil/StringUtil.h ../../include/IceGrid/Exception.h ../../include/IceUtil/Random.h ../../include/IceGrid/Admin.h ../../include/Ice/SliceChecksumDict.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h
DescriptorHelper$(OBJEXT): DescriptorHelper.cpp ../../include/Ice/Ice.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/IceUtil/Config.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/GCShared.h ../../include/Ice/GCCountMap.h ../../include/Ice/GC.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/LoggerF.h ../../include/Ice/StreamF.h ../../include/Ice/StatsF.h ../../include/Ice/StringConverter.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/IceUtil/Unicode.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/FacetMap.h ../../include/Ice/Locator.h ../../include/Ice/ProcessF.h ../../include/Ice/ServantLocator.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Connection.h ../../include/Ice/Functional.h ../../include/IceUtil/Functional.h ../../include/Ice/Stream.h ../IceGrid/DescriptorHelper.h ../../include/IceUtil/OutputUtil.h ../../include/IceXML/Parser.h ../../include/IceGrid/Admin.h ../../include/Ice/SliceChecksumDict.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Exception.h ../../include/IceGrid/Descriptor.h ../IceGrid/Util.h ../../include/IceUtil/StringUtil.h ../../include/IceUtil/Random.h
NodeSessionI$(OBJEXT): NodeSessionI.cpp ../../include/Ice/Ice.h ../../include/Ice/GCRecMutex.h ../../include/IceUtil/RecMutex.h ../../include/IceUtil/Config.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/GCShared.h ../../include/Ice/GCCountMap.h ../../include/Ice/GC.h ../../include/IceUtil/Thread.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/Initialize.h ../../include/Ice/CommunicatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/PropertiesF.h ../../include/Ice/InstanceF.h ../../include/Ice/LoggerF.h ../../include/Ice/StreamF.h ../../include/Ice/StatsF.h ../../include/Ice/StringConverter.h ../../include/Ice/BuiltinSequences.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/LocalException.h ../../include/Ice/Properties.h ../../include/Ice/Logger.h ../../include/Ice/LoggerUtil.h ../../include/Ice/Stats.h ../../include/Ice/Communicator.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/PluginF.h ../../include/Ice/ObjectFactory.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/Object.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/BasicStream.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/IceUtil/Unicode.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/Direct.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/FacetMap.h ../../include/Ice/Locator.h ../../include/Ice/ProcessF.h ../../include/Ice/ServantLocator.h ../../include/Ice/Process.h ../../include/Ice/Application.h ../../include/Ice/Connection.h ../../include/Ice/Functional.h ../../include/IceUtil/Functional.h ../../include/Ice/Stream.h ../IceGrid/NodeSessionI.h ../IceGrid/Internal.h ../../include/Glacier2/Session.h ../../include/Glacier2/SSLInfo.h ../../include/IceGrid/Admin.h ../../include/Ice/SliceChecksumDict.h ../../include/IceGrid/Exception.h ../../include/IceGrid/Descriptor.h ../../include/IceGrid/Observer.h ../../include/IceGrid/Registry.h ../../include/IceGrid/Session.h ../IceGrid/Database.h ../../include/Freeze/ConnectionF.h ../IceGrid/StringApplicationInfoDict.h ../../include/Freeze/Map.h ../../include/Freeze/DB.h ../../include/Freeze/Exception.h ../../include/Freeze/Connection.h ../../include/Freeze/Transaction.h ../IceGrid/IdentityObjectInfoDict.h ../IceGrid/StringAdapterInfoDict.h ../IceGrid/ServerCache.h ../../include/IceGrid/Query.h ../IceGrid/Allocatable.h ../IceGrid/WaitQueue.h ../IceGrid/Cache.h ../IceGrid/Util.h ../../include/IceUtil/StringUtil.h ../../include/IceUtil/Random.h ../IceGrid/TraceLevels.h ../IceGrid/NodeCache.h ../IceGrid/ReplicaCache.h ../../include/IceStorm/IceStorm.h ../IceGrid/ObjectCache.h ../IceGrid/AllocatableObjectCache.h ../IceGrid/AdapterCache.h ../IceGrid/Topics.h
diff --git a/cpp/src/IceGrid/Allocatable.cpp b/cpp/src/IceGrid/Allocatable.cpp
index df21a3fbfdb..4fa81c13583 100644
--- a/cpp/src/IceGrid/Allocatable.cpp
+++ b/cpp/src/IceGrid/Allocatable.cpp
@@ -205,7 +205,7 @@ Allocatable::tryAllocate(const AllocationRequestPtr& request, bool fromRelease)
}
}
-bool
+void
Allocatable::release(const SessionIPtr& session, bool fromRelease)
{
bool isReleased = false;
@@ -218,6 +218,7 @@ Allocatable::release(const SessionIPtr& session, bool fromRelease)
{
wait();
}
+ assert(!_releasing);
}
if(!_session || _session != session)
@@ -230,93 +231,95 @@ Allocatable::release(const SessionIPtr& session, bool fromRelease)
_session = 0;
released(session);
+
+ isReleased = true;
- if(!_releasing)
+ if(!fromRelease && !_requests.empty())
{
- if(!_requests.empty())
- {
- assert(!_parent);
- _releasing = true; // Prevent new allocations.
- hasRequests = true;
- }
-
- isReleased = true;
+ assert(!_parent);
+ _releasing = true; // Prevent new allocations.
+ hasRequests = true;
}
}
}
- if(_parent)
+ if(isReleased)
{
- return _parent->release(session, fromRelease);
+ releasedNoSync(session);
}
- if(hasRequests)
+ if(_parent)
+ {
+ _parent->release(session, fromRelease);
+ }
+ else if(!fromRelease)
{
- while(true)
+ if(hasRequests)
{
- AllocationRequestPtr request;
- AllocatablePtr allocatable = dequeueAllocationAttempt(request);
- if(!allocatable)
+ while(true)
{
- Lock sync(*this);
- assert(_count == 0 && _requests.empty());
- _releasing = false;
- notifyAll();
- return true;
- }
+ AllocationRequestPtr request;
+ AllocatablePtr allocatable = dequeueAllocationAttempt(request);
+ if(!allocatable)
+ {
+ Lock sync(*this);
+ assert(_count == 0 && _requests.empty());
+ _releasing = false;
+ notifyAll();
+ return;
+ }
- //
- // Try to allocate the allocatable with the request or if
- // there's no request, just notify the allocatable that it can
- // be allocated again.
- //
- if(request && allocatable->allocate(request, true) || !request && allocatable->canTryAllocate())
- {
- while(true)
+ //
+ // Try to allocate the allocatable with the request or if
+ // there's no request, just notify the allocatable that it can
+ // be allocated again.
+ //
+ if(request && allocatable->allocate(request, true) || !request && allocatable->canTryAllocate())
{
+ while(true)
{
- Lock sync(*this);
- assert(_count);
-
- allocatable = 0;
- request = 0;
-
- //
- // Check if there's other requests from the session
- // waiting to allocate this allocatable.
- //
- list<pair<AllocatablePtr, AllocationRequestPtr> >::iterator p = _requests.begin();
- while(p != _requests.end())
{
- if(p->second && p->second->getSession() == _session)
+ Lock sync(*this);
+ assert(_count);
+
+ allocatable = 0;
+ request = 0;
+
+ //
+ // Check if there's other requests from the session
+ // waiting to allocate this allocatable.
+ //
+ list<pair<AllocatablePtr, AllocationRequestPtr> >::iterator p = _requests.begin();
+ while(p != _requests.end())
{
- allocatable = p->first;
- request = p->second;
- _requests.erase(p);
- break;
+ if(p->second && p->second->getSession() == _session)
+ {
+ allocatable = p->first;
+ request = p->second;
+ _requests.erase(p);
+ break;
+ }
+ ++p;
+ }
+ if(!allocatable)
+ {
+ _releasing = false;
+ notifyAll();
+ return; // We're done, the allocatable was released (but is allocated again)!
}
- ++p;
- }
- if(!allocatable)
- {
- _releasing = false;
- notifyAll();
- return true; // We're done, the allocatable was released (but is allocated again)!
}
- }
- assert(allocatable && request);
- allocatable->allocate(request, true);
+ assert(allocatable && request);
+ allocatable->allocate(request, true);
+ }
}
}
}
+ else if(isReleased)
+ {
+ canTryAllocate(); // Notify that this allocatable can be allocated.
+ }
}
- else if(isReleased)
- {
- canTryAllocate(); // Notify that this allocatable can be allocated.
- return true; // The allocatable was released.
- }
- return false;
}
SessionIPtr
@@ -383,7 +386,8 @@ Allocatable::allocate(const AllocationRequestPtr& request, bool tryAllocate, boo
{
return false;
}
-
+
+ bool allocationCount = 0;
try
{
Lock sync(*this);
@@ -406,7 +410,7 @@ Allocatable::allocate(const AllocationRequestPtr& request, bool tryAllocate, boo
assert(_count == 0);
_session = request->getSession();
++_count;
- return true; // Allocated
+ allocationCount = _count;
}
}
else if(_session == request->getSession())
@@ -416,7 +420,7 @@ Allocatable::allocate(const AllocationRequestPtr& request, bool tryAllocate, boo
assert(_count > 0);
++_count;
request->allocated(this, _session);
- return true; // Allocated
+ allocationCount = _count;
}
}
else
@@ -440,12 +444,16 @@ Allocatable::allocate(const AllocationRequestPtr& request, bool tryAllocate, boo
}
throw ex;
}
-
- if(_parent)
+
+ if(allocationCount == 1)
+ {
+ allocatedNoSync(request->getSession());
+ }
+ else if(allocationCount == 0 && _parent)
{
_parent->release(request->getSession(), fromRelease);
}
- return false;
+ return allocationCount > 0;
}
bool
@@ -460,30 +468,37 @@ Allocatable::allocateFromChild(const AllocationRequestPtr& request,
{
return false;
}
-
- Lock sync(*this);
- if((!_session || _session == request->getSession()) && (fromRelease || !_releasing))
+
+ int allocationCount = 0;
{
- if(!_session)
+ Lock sync(*this);
+ if((!_session || _session == request->getSession()) && (fromRelease || !_releasing))
{
- try
- {
- allocated(request->getSession());
- }
- catch(const SessionDestroyedException&)
+ if(!_session)
{
- // Ignore
+ try
+ {
+ allocated(request->getSession());
+ }
+ catch(const SessionDestroyedException&)
+ {
+ // Ignore
+ }
}
+ _session = request->getSession();
+ ++_count;
+ allocationCount = _count;
+ }
+ else
+ {
+ queueAllocationAttempt(child, request, tryAllocate);
}
- _session = request->getSession();
- ++_count;
- return true; // Allocated
}
- else
+
+ if(allocationCount == 1)
{
- queueAllocationAttempt(child, request, tryAllocate);
+ allocatedNoSync(request->getSession());
}
-
- return false;
+ return allocationCount > 0;
}
diff --git a/cpp/src/IceGrid/Allocatable.h b/cpp/src/IceGrid/Allocatable.h
index 13898863319..03ffc57fce6 100644
--- a/cpp/src/IceGrid/Allocatable.h
+++ b/cpp/src/IceGrid/Allocatable.h
@@ -80,7 +80,7 @@ public:
virtual void checkAllocatable();
virtual bool allocate(const AllocationRequestPtr&, bool = false);
virtual bool tryAllocate(const AllocationRequestPtr&, bool = false);
- virtual bool release(const SessionIPtr&, bool = false);
+ virtual void release(const SessionIPtr&, bool = false);
bool isAllocatable() const { return _allocatable; }
SessionIPtr getSession() const;
@@ -89,6 +89,9 @@ public:
virtual void released(const SessionIPtr&) = 0;
virtual bool canTryAllocate() { return false; }
+ virtual void allocatedNoSync(const SessionIPtr&) { ; }
+ virtual void releasedNoSync(const SessionIPtr&) { ; }
+
bool operator<(const Allocatable&) const;
protected:
diff --git a/cpp/src/IceGrid/Cache.h b/cpp/src/IceGrid/Cache.h
index 51d7e9dcc57..65b246a2be7 100644
--- a/cpp/src/IceGrid/Cache.h
+++ b/cpp/src/IceGrid/Cache.h
@@ -19,7 +19,7 @@ namespace IceGrid
{
template<typename Key, typename Value>
-class Cache : public IceUtil::Mutex
+class Cache : public IceUtil::Monitor<IceUtil::Mutex>
{
typedef IceUtil::Handle<Value> ValuePtr;
typedef std::map<Key, ValuePtr> ValueMap;
@@ -142,7 +142,7 @@ public:
virtual std::vector<std::string>
getAll(const std::string& expr)
{
- IceUtil::Mutex::Lock sync(*this);
+ IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
return getMatchingKeys<std::map<std::string,TPtr> >(Cache<std::string, T>::_entries, expr);
}
};
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp
index ac63076458c..1f777a3675f 100644
--- a/cpp/src/IceGrid/Database.cpp
+++ b/cpp/src/IceGrid/Database.cpp
@@ -119,7 +119,8 @@ Database::Database(const Ice::ObjectAdapterPtr& registryAdapter,
const IceStorm::TopicManagerPrx& topicManager,
const string& instanceName,
int sessionTimeout,
- const TraceLevelsPtr& traceLevels) :
+ const TraceLevelsPtr& traceLevels,
+ bool master) :
_communicator(registryAdapter->getCommunicator()),
_internalAdapter(registryAdapter),
_topicManager(topicManager),
@@ -127,7 +128,7 @@ Database::Database(const Ice::ObjectAdapterPtr& registryAdapter,
_instanceName(instanceName),
_traceLevels(traceLevels),
_sessionTimeout(sessionTimeout),
- _master(_communicator->getProperties()->getProperty("IceGrid.Registry.ReplicaName").empty()),
+ _master(master),
_replicaCache(_communicator, topicManager),
_nodeCache(_communicator, _replicaCache, _master),
_objectCache(_communicator),
@@ -165,6 +166,7 @@ Database::Database(const Ice::ObjectAdapterPtr& registryAdapter,
_nodeObserverTopic = new NodeObserverTopic(_topicManager, _internalAdapter);
_registryObserverTopic = new RegistryObserverTopic(_topicManager);
+
_applicationObserverTopic = new ApplicationObserverTopic(_topicManager, _applications);
_adapterObserverTopic = new AdapterObserverTopic(_topicManager, _adapters);
_objectObserverTopic = new ObjectObserverTopic(_topicManager, _objects);
@@ -391,24 +393,19 @@ Database::addApplication(const ApplicationInfo& info, AdminSessionI* session)
checkForAddition(helper);
load(helper, entries, info.uuid, info.revision);
_updating.insert(info.descriptor.name);
+
+ _replicaCache.startApplicationReplication(info.uuid, info.revision);
}
- //
- // If the update is from an admin session, we synchronize the
- // servers and throw if there's errors.
- //
- if(session)
+ if(_master)
{
- //
- // Synchronize the servers on the nodes. If a server couldn't be
- // deployed we unload the application and throw.
- //
try
{
for_each(entries.begin(), entries.end(), IceUtil::voidMemFun(&ServerEntry::sync));
}
catch(const DeploymentException& ex)
{
+ try
{
Lock sync(*this);
entries.clear();
@@ -416,21 +413,14 @@ Database::addApplication(const ApplicationInfo& info, AdminSessionI* session)
_updating.erase(info.descriptor.name);
notifyAll();
}
- try
- {
- for_each(entries.begin(), entries.end(), IceUtil::voidMemFun(&ServerEntry::sync));
- }
- catch(const DeploymentException&)
+ catch(const DeploymentException& ex)
{
- // TODO: warning?
+ Ice::Error err(_traceLevels->logger);
+ err << "failed to rollback previous application `" << info.descriptor.name << "':\n" << ex.reason;
}
throw ex;
}
}
- else
- {
- // TODO: XXX: Synchronize the servers here?!
- }
//
// Save the application descriptor.
@@ -446,6 +436,7 @@ Database::addApplication(const ApplicationInfo& info, AdminSessionI* session)
_applicationObserverTopic->applicationAdded(serial, info);
_replicaCache.waitForUpdateReplication("application", serial);
+ _replicaCache.finishApplicationReplication(info.uuid, info.revision);
if(_traceLevels->application > 0)
{
@@ -491,6 +482,7 @@ Database::updateApplication(const ApplicationUpdateInfo& updt, AdminSessionI* se
newDesc = helper.getDefinition();
_updating.insert(update.descriptor.name);
+ _replicaCache.startApplicationReplication(oldApp.uuid, update.revision);
}
finishUpdate(entries, update, oldApp, newDesc, session);
@@ -532,6 +524,7 @@ Database::syncApplicationDescriptor(const ApplicationDescriptor& newDesc, AdminS
reload(previous, helper, entries, oldApp.uuid, oldApp.revision + 1);
_updating.insert(update.descriptor.name);
+ _replicaCache.startApplicationReplication(oldApp.uuid, update.revision);
}
finishUpdate(entries, update, oldApp, newDesc, session);
@@ -579,6 +572,7 @@ Database::instantiateServer(const string& application,
newDesc = helper.getDefinition();
_updating.insert(update.descriptor.name);
+ _replicaCache.startApplicationReplication(oldApp.uuid, update.revision);
}
finishUpdate(entries, update, oldApp, newDesc, session);
@@ -752,9 +746,15 @@ Database::getReplicaInfo(const string& name) const
}
void
-Database::replicaReceivedUpdate(const string& name, const string& update, int serial)
+Database::replicaReceivedUpdate(const string& name, const string& update, int serial, const string& failure)
+{
+ _replicaCache.replicaReceivedUpdate(name, update, serial, failure);
+}
+
+void
+Database::waitForApplicationReplication(const string& application, int revision)
{
- _replicaCache.replicaReceivedUpdate(name, update, serial);
+ _replicaCache.waitForApplicationReplication(application, revision);
}
void
@@ -1754,7 +1754,7 @@ Database::finishUpdate(ServerEntrySeq& entries,
const ApplicationDescriptor& newDesc,
AdminSessionI* session)
{
- if(session)
+ if(_master)
{
//
// Synchronize the servers on the nodes. If a server couldn't be
@@ -1766,6 +1766,7 @@ Database::finishUpdate(ServerEntrySeq& entries,
}
catch(const DeploymentException& ex)
{
+ ApplicationUpdateInfo newUpdate;
{
Lock sync(*this);
entries.clear();
@@ -1775,13 +1776,15 @@ Database::finishUpdate(ServerEntrySeq& entries,
_updating.erase(newDesc.name);
notifyAll();
}
+
try
{
for_each(entries.begin(), entries.end(), IceUtil::voidMemFun(&ServerEntry::sync));
}
- catch(const DeploymentException&)
+ catch(const DeploymentException& ex)
{
- // TODO: warning?
+ Ice::Error err(_traceLevels->logger);
+ err << "failed to rollback previous application `" << oldApp.descriptor.name << "':\n" << ex.reason;
}
throw ex;
}
@@ -1808,6 +1811,7 @@ Database::finishUpdate(ServerEntrySeq& entries,
_applicationObserverTopic->applicationUpdated(serial, update);
_replicaCache.waitForUpdateReplication("application", serial);
+ _replicaCache.finishApplicationReplication(oldApp.uuid, update.revision);
if(_traceLevels->application > 0)
{
diff --git a/cpp/src/IceGrid/Database.h b/cpp/src/IceGrid/Database.h
index 0184729347f..e8226d776cd 100644
--- a/cpp/src/IceGrid/Database.h
+++ b/cpp/src/IceGrid/Database.h
@@ -51,7 +51,7 @@ class Database : public IceUtil::Shared, public IceUtil::Monitor<IceUtil::Mutex>
public:
Database(const Ice::ObjectAdapterPtr&, const IceStorm::TopicManagerPrx&,
- const std::string&, int, const TraceLevelsPtr&);
+ const std::string&, int, const TraceLevelsPtr&, bool);
virtual ~Database();
void destroy();
@@ -92,7 +92,8 @@ public:
void addReplica(const std::string&, const ReplicaSessionIPtr&);
RegistryInfo getReplicaInfo(const std::string&) const;
InternalRegistryPrx getReplica(const std::string&) const;
- void replicaReceivedUpdate(const std::string&, const std::string&, int);
+ void replicaReceivedUpdate(const std::string&, const std::string&, int, const std::string&);
+ void waitForApplicationReplication(const std::string&, int);
void removeReplica(const std::string&, const ReplicaSessionIPtr&);
Ice::StringSeq getAllReplicas(const std::string& = std::string());
@@ -183,6 +184,7 @@ private:
AdminSessionI* _lock;
std::string _lockUserId;
int _applicationSerial;
+ int _replicaApplicationSerial;
int _adapterSerial;
int _objectSerial;
std::set<std::string> _updating;
diff --git a/cpp/src/IceGrid/IceGridNode.cpp b/cpp/src/IceGrid/IceGridNode.cpp
index 26ddd08aaec..2e278db93b2 100644
--- a/cpp/src/IceGrid/IceGridNode.cpp
+++ b/cpp/src/IceGrid/IceGridNode.cpp
@@ -244,6 +244,28 @@ NodeService::start(int argc, char* argv[])
properties->setProperty("IceGrid.Node.ThreadPool.SizeMax", os.str());
}
+ size = properties->getPropertyAsIntWithDefault("Ice.ThreadPool.Client.Size", 0);
+ if(size <= 0)
+ {
+ properties->setProperty("Ice.ThreadPool.Client.Size", "1");
+ size = 1;
+ }
+ sizeMax = properties->getPropertyAsIntWithDefault("Ice.ThreadPool.Client.SizeMax", 0);
+ if(sizeMax <= 0)
+ {
+ if(size >= sizeMax)
+ {
+ sizeMax = size * 10;
+ }
+ if(sizeMax < 100)
+ {
+ sizeMax = 100;
+ }
+ ostringstream os;
+ os << sizeMax;
+ properties->setProperty("Ice.ThreadPool.Client.SizeMax", os.str());
+ }
+
//
// Create the activator.
//
@@ -518,6 +540,9 @@ NodeService::start(int argc, char* argv[])
// We wait for the node to be registered with the registry
// before to claim it's ready.
//
+ // TODO: XXX: That's not correct. The node can't be
+ // interrupted if we wait here...
+ //
_sessions.waitForCreate();
print(bundleName + " ready");
}
diff --git a/cpp/src/IceGrid/Internal.ice b/cpp/src/IceGrid/Internal.ice
index 6c5d1fa61be..7ebf0e02e56 100644
--- a/cpp/src/IceGrid/Internal.ice
+++ b/cpp/src/IceGrid/Internal.ice
@@ -202,7 +202,8 @@ interface Node
* Destroy the given server.
*
**/
- ["amd", "ami"] idempotent void destroyServer(string name);
+ ["amd", "ami"] idempotent void destroyServer(string name, string uuid, int revision)
+ throws DeploymentException;
/**
*
@@ -304,6 +305,13 @@ interface NodeSession
/**
*
+ * Ask the registry to load the servers on the node.
+ *
+ **/
+ ["nonmutating", "cpp:const"] idempotent void loadServers();
+
+ /**
+ *
* Get the name of the servers deployed on the node.
*
**/
@@ -311,6 +319,13 @@ interface NodeSession
/**
*
+ * Wait for the replication of the given application to be done.
+ *
+ **/
+ ["ami", "cpp:const"] void waitForApplicationReplication(string application, int revision);
+
+ /**
+ *
* Destroy the session.
*
**/
@@ -376,7 +391,7 @@ interface ReplicaSession
* before to continue.
*
**/
- void receivedUpdate(string name, int serial);
+ void receivedUpdate(string name, int serial, string failure);
/**
*
diff --git a/cpp/src/IceGrid/InternalRegistryI.cpp b/cpp/src/IceGrid/InternalRegistryI.cpp
index c679b7486cb..d821c44c024 100644
--- a/cpp/src/IceGrid/InternalRegistryI.cpp
+++ b/cpp/src/IceGrid/InternalRegistryI.cpp
@@ -113,10 +113,17 @@ InternalRegistryI::registerNode(const std::string& name,
const NodeInfo& info,
const Ice::Current& current)
{
- NodeSessionIPtr session = new NodeSessionI(_database, name, node, info);
- NodeSessionPrx proxy = NodeSessionPrx::uncheckedCast(current.adapter->addWithUUID(session));
- _reaper->add(new SessionReapable<NodeSessionI>(current.adapter, session, proxy), _timeout);
- return proxy;
+ try
+ {
+ NodeSessionIPtr session = new NodeSessionI(_database, name, node, info);
+ NodeSessionPrx proxy = NodeSessionPrx::uncheckedCast(current.adapter->addWithUUID(session));
+ _reaper->add(new SessionReapable<NodeSessionI>(current.adapter, session, proxy), _timeout);
+ return proxy;
+ }
+ catch(const Ice::ObjectAdapterDeactivatedException&)
+ {
+ throw Ice::ObjectNotExistException(__FILE__, __LINE__, current.id, current.facet, current.operation);
+ }
}
ReplicaSessionPrx
@@ -126,10 +133,18 @@ InternalRegistryI::registerReplica(const std::string& name,
const DatabaseObserverPrx& dbObserver,
const Ice::Current& current)
{
- ReplicaSessionIPtr session = new ReplicaSessionI(_database, _wellKnownObjects, name, info, registry, dbObserver);
- ReplicaSessionPrx proxy = ReplicaSessionPrx::uncheckedCast(current.adapter->addWithUUID(session));
- _reaper->add(new SessionReapable<ReplicaSessionI>(current.adapter, session, proxy), _timeout);
- return proxy;
+ try
+ {
+ ReplicaSessionIPtr session = new ReplicaSessionI(_database, _wellKnownObjects, name, info, registry,
+ dbObserver);
+ ReplicaSessionPrx proxy = ReplicaSessionPrx::uncheckedCast(current.adapter->addWithUUID(session));
+ _reaper->add(new SessionReapable<ReplicaSessionI>(current.adapter, session, proxy), _timeout);
+ return proxy;
+ }
+ catch(const Ice::ObjectAdapterDeactivatedException&)
+ {
+ throw Ice::ObjectNotExistException(__FILE__, __LINE__, current.id, current.facet, current.operation);
+ }
}
void
diff --git a/cpp/src/IceGrid/LocatorRegistryI.cpp b/cpp/src/IceGrid/LocatorRegistryI.cpp
index 2efd89b93dd..bfe1fecdb2a 100644
--- a/cpp/src/IceGrid/LocatorRegistryI.cpp
+++ b/cpp/src/IceGrid/LocatorRegistryI.cpp
@@ -278,15 +278,20 @@ LocatorRegistryI::setAdapterDirectProxy_async(const Ice::AMD_LocatorRegistry_set
ReplicaSessionPrx session = _session.getSession();
if(session)
{
- session->setAdapterDirectProxy_async(newMasterSetDirectProxyCB(cb), adapterId, "", proxy);
- }
- else
- {
- //
- // TODO: Add a better exception?
- //
- cb->ice_exception(Ice::AdapterNotFoundException());
+ try
+ {
+ session->setAdapterDirectProxy_async(newMasterSetDirectProxyCB(cb), adapterId, "", proxy);
+ return;
+ }
+ catch(const Ice::LocalException&)
+ {
+ }
}
+
+ //
+ // TODO: Add a better exception?
+ //
+ cb->ice_exception(Ice::AdapterNotFoundException());
return;
}
}
@@ -351,15 +356,21 @@ LocatorRegistryI::setReplicatedAdapterDirectProxy_async(
ReplicaSessionPrx session = _session.getSession();
if(session)
{
- session->setAdapterDirectProxy_async(newMasterSetDirectProxyCB(cb), adapterId, replicaGroupId, proxy);
- }
- else
- {
- //
- // TODO: Add a better exception?
- //
- cb->ice_exception(Ice::AdapterNotFoundException());
+ try
+ {
+ session->setAdapterDirectProxy_async(newMasterSetDirectProxyCB(cb), adapterId, replicaGroupId,
+ proxy);
+ return;
+ }
+ catch(const Ice::LocalException&)
+ {
+ }
}
+
+ //
+ // TODO: Add a better exception?
+ //
+ cb->ice_exception(Ice::AdapterNotFoundException());
return;
}
}
diff --git a/cpp/src/IceGrid/NodeCache.cpp b/cpp/src/IceGrid/NodeCache.cpp
index cc99eb4c07c..bb65d422d93 100644
--- a/cpp/src/IceGrid/NodeCache.cpp
+++ b/cpp/src/IceGrid/NodeCache.cpp
@@ -134,6 +134,18 @@ public:
os << ex;
_server->exception(NodeUnreachableException(_node, os.str()));
}
+ catch(const DeploymentException& ex)
+ {
+ if(_traceLevels && _traceLevels->server > 1)
+ {
+ Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat);
+ out << "couldn't unload `" << _id << "' on node `" << _node << "':\n" << ex.reason;
+ }
+
+ ostringstream os;
+ os << "couldn't unload `" << _id << "' on node `" << _node << "':\n" << ex.reason;
+ _server->exception(DeploymentException(os.str()));
+ }
catch(const Ice::Exception& ex)
{
if(_traceLevels && _traceLevels->server > 1)
@@ -280,23 +292,6 @@ NodeEntry::setSession(const NodeSessionIPtr& session)
Ice::Trace out(_cache.getTraceLevels()->logger, _cache.getTraceLevels()->nodeCat);
out << "node `" << _name << "' up";
}
-
- ServerEntrySeq entries;
- {
- Lock sync(*this);
- for(map<string, ServerEntryPtr>::const_iterator q = _servers.begin() ; q != _servers.end(); ++q)
- {
- entries.push_back(q->second);
- }
- }
-
- try
- {
- for_each(entries.begin(), entries.end(), IceUtil::voidMemFun(&ServerEntry::sync));
- }
- catch(const DeploymentException&)
- {
- }
}
else
{
@@ -460,17 +455,17 @@ NodeEntry::loadServer(const ServerEntryPtr& entry, const ServerInfo& server, con
}
void
-NodeEntry::destroyServer(const ServerEntryPtr& entry, const string& id)
+NodeEntry::destroyServer(const ServerEntryPtr& entry, const ServerInfo& info)
{
try
{
if(_cache.getTraceLevels() && _cache.getTraceLevels()->server > 2)
{
Ice::Trace out(_cache.getTraceLevels()->logger, _cache.getTraceLevels()->serverCat);
- out << "unloading `" << id << "' on node `" << _name << "'";
+ out << "unloading `" << info.descriptor->id << "' on node `" << _name << "'";
}
- AMI_Node_destroyServerPtr amiCB = new DestroyCB(_cache.getTraceLevels(), entry, id, _name);
- getProxy()->destroyServer_async(amiCB, id);
+ AMI_Node_destroyServerPtr amiCB = new DestroyCB(_cache.getTraceLevels(), entry, info.descriptor->id, _name);
+ getProxy()->destroyServer_async(amiCB, info.descriptor->id, info.uuid, info.revision);
}
catch(const NodeUnreachableException& ex)
{
diff --git a/cpp/src/IceGrid/NodeCache.h b/cpp/src/IceGrid/NodeCache.h
index ceea6d94b89..4ebec4f9a19 100644
--- a/cpp/src/IceGrid/NodeCache.h
+++ b/cpp/src/IceGrid/NodeCache.h
@@ -52,7 +52,7 @@ public:
bool canRemove();
void loadServer(const ServerEntryPtr&, const ServerInfo&, const SessionIPtr&);
- void destroyServer(const ServerEntryPtr&, const std::string&);
+ void destroyServer(const ServerEntryPtr&, const ServerInfo&);
ServerInfo getServerInfo(const ServerInfo&, const SessionIPtr&);
private:
diff --git a/cpp/src/IceGrid/NodeI.cpp b/cpp/src/IceGrid/NodeI.cpp
index 2d4b678c62e..1eed1b8bbf6 100644
--- a/cpp/src/IceGrid/NodeI.cpp
+++ b/cpp/src/IceGrid/NodeI.cpp
@@ -248,33 +248,25 @@ NodeI::loadServer_async(const AMD_Node_loadServerPtr& amdCB,
}
void
-NodeI::destroyServer_async(const AMD_Node_destroyServerPtr& amdCB, const string& serverId, const Ice::Current& current)
+NodeI::destroyServer_async(const AMD_Node_destroyServerPtr& amdCB,
+ const string& serverId,
+ const string& uuid,
+ int revision,
+ const Ice::Current& current)
{
Lock sync(*this);
++_serial;
ServerIPtr server = ServerIPtr::dynamicCast(_adapter->find(createServerIdentity(serverId)));
- if(server)
- {
- //
- // Destroy the server object if it's loaded.
- //
- server->destroy(amdCB);
- }
- else
+ if(!server)
{
- //
- // Delete the server directory from the disk.
- //
- try
- {
- removeRecursive(_serversDir + "/" + serverId);
- }
- catch(const string&)
- {
- }
- amdCB->ice_response();
+ server = new ServerI(this, 0, _serversDir, serverId, _waitTime);
}
+
+ //
+ // Destroy the server object if it's loaded.
+ //
+ server->destroy(amdCB, uuid, revision);
}
void
@@ -667,7 +659,7 @@ NodeI::checkConsistencyNoSync(const Ice::StringSeq& servers)
//
try
{
- server->destroy(0);
+ server->destroy(0, "", 0);
p = remove.erase(p);
continue;
}
@@ -768,6 +760,12 @@ NodeI::checkConsistencyNoSync(const Ice::StringSeq& servers)
}
}
+NodeSessionPrx
+NodeI::getMasterNodeSession() const
+{
+ return _sessions.getMasterNodeSession();
+}
+
bool
NodeI::canRemoveServerDirectory(const string& name)
{
diff --git a/cpp/src/IceGrid/NodeI.h b/cpp/src/IceGrid/NodeI.h
index 8e4b54e1fd1..13b2adfa42d 100644
--- a/cpp/src/IceGrid/NodeI.h
+++ b/cpp/src/IceGrid/NodeI.h
@@ -40,7 +40,8 @@ public:
virtual ~NodeI();
virtual void loadServer_async(const AMD_Node_loadServerPtr&, const ServerInfo&, bool, const Ice::Current&);
- virtual void destroyServer_async(const AMD_Node_destroyServerPtr&, const std::string&, const Ice::Current&);
+ virtual void destroyServer_async(const AMD_Node_destroyServerPtr&, const std::string&, const std::string&,
+ int, const Ice::Current&);
virtual void patch(const std::string&, const std::string&, const DistributionDescriptor&, bool,
const Ice::Current&);
@@ -65,6 +66,7 @@ public:
NodeSessionPrx registerWithRegistry(const InternalRegistryPrx&);
void setObserver(const NodeObserverPrx&);
void checkConsistency(const NodeSessionPrx&);
+ NodeSessionPrx getMasterNodeSession() const;
void addServer(const std::string&, const ServerIPtr&);
void removeServer(const std::string&, const ServerIPtr&);
diff --git a/cpp/src/IceGrid/NodeSessionI.cpp b/cpp/src/IceGrid/NodeSessionI.cpp
index 2b19cfc59b1..35ca723dfa3 100644
--- a/cpp/src/IceGrid/NodeSessionI.cpp
+++ b/cpp/src/IceGrid/NodeSessionI.cpp
@@ -81,6 +81,19 @@ NodeSessionI::getObserver(const Ice::Current& current) const
}
}
+void
+NodeSessionI::loadServers(const Ice::Current& current) const
+{
+ //
+ // Get the server proxies to load them on the node.
+ //
+ Ice::StringSeq servers = _database->getAllNodeServers(_name);
+ for(Ice::StringSeq::const_iterator p = servers.begin(); p != servers.end(); ++p)
+ {
+ _database->getServer(*p);
+ }
+}
+
Ice::StringSeq
NodeSessionI::getServers(const Ice::Current& current) const
{
@@ -88,8 +101,20 @@ NodeSessionI::getServers(const Ice::Current& current) const
}
void
+NodeSessionI::waitForApplicationReplication(const std::string& application, int revision, const Ice::Current&) const
+{
+ _database->waitForApplicationReplication(application, revision);
+}
+
+void
NodeSessionI::destroy(const Ice::Current& current)
{
+ //
+ // TODO: XXX: If we set destroy to true now, it's possible that
+ // the node calls keepAlive on the sesion and tries to create the
+ // session after getting the ONE and before the node is removed
+ // from the db...
+ //
{
Lock sync(*this);
if(_destroy)
diff --git a/cpp/src/IceGrid/NodeSessionI.h b/cpp/src/IceGrid/NodeSessionI.h
index 8d07ef35ace..e5e012cfc43 100644
--- a/cpp/src/IceGrid/NodeSessionI.h
+++ b/cpp/src/IceGrid/NodeSessionI.h
@@ -30,7 +30,9 @@ public:
virtual void keepAlive(const LoadInfo&, const Ice::Current&);
virtual int getTimeout(const Ice::Current&) const;
virtual NodeObserverPrx getObserver(const Ice::Current&) const;
+ virtual void loadServers(const Ice::Current&) const;
virtual Ice::StringSeq getServers(const Ice::Current&) const;
+ virtual void waitForApplicationReplication(const std::string&, int, const Ice::Current&) const;
virtual void destroy(const Ice::Current&);
const NodePrx& getNode() const;
diff --git a/cpp/src/IceGrid/NodeSessionManager.cpp b/cpp/src/IceGrid/NodeSessionManager.cpp
index d8767a3e0af..680b579369c 100644
--- a/cpp/src/IceGrid/NodeSessionManager.cpp
+++ b/cpp/src/IceGrid/NodeSessionManager.cpp
@@ -47,7 +47,7 @@ NodeSessionKeepAliveThread::createSession(const InternalRegistryPrx& registry, I
int t = session->getTimeout();
if(t > 0)
{
- timeout = IceUtil::Time::seconds(t);
+ timeout = IceUtil::Time::seconds(t / 2);
}
if(traceLevels && traceLevels->replica > 0)
@@ -150,6 +150,14 @@ NodeSessionManager::create(const NodeIPtr& node)
_thread = new Thread(*this, _master);
_thread->start();
+
+ //
+ // We can't wait for the session to be created here as the node
+ // adapter isn't activated yet and the registry would hang trying
+ // to load the servers on the node (when createSession invokes
+ // loadServers() on the session).
+ //
+ //_thread->tryCreateSession(_master);
}
void
@@ -273,6 +281,7 @@ NodeSessionManager::syncReplicas(const InternalRegistryPrxSeq& replicas)
{
thread = new NodeSessionKeepAliveThread(*p, _node);
thread->start();
+ thread->tryCreateSession(*p);
}
_sessions.insert(make_pair((*p)->ice_getIdentity(), thread));
}
@@ -309,7 +318,7 @@ NodeSessionManager::createSession(const InternalRegistryPrx& registry, IceUtil::
int t = session->getTimeout();
if(t > 0)
{
- timeout = IceUtil::Time::seconds(t);
+ timeout = IceUtil::Time::seconds(t / 2);
}
if(traceLevels && traceLevels->replica > 0)
@@ -334,16 +343,6 @@ NodeSessionManager::createSession(const InternalRegistryPrx& registry, IceUtil::
}
}
- if(session)
- {
- _node->setObserver(session->getObserver());
- _node->checkConsistency(session);
- }
- else
- {
- _node->setObserver(0);
- }
-
//
// Get the list of replicas (either with the master session or the
// IceGrid::Query interface) and make sure we have sessions opened
@@ -387,6 +386,35 @@ NodeSessionManager::createSession(const InternalRegistryPrx& registry, IceUtil::
// IGNORE
}
+ //
+ // Ask the master to load the servers on the node. Once this is
+ // done we check the consistency of the node to make sure old
+ // servers are removed.
+ //
+ // NOTE: it's important for this to be done after trying to
+ // register with the replicas. When the master loads the server
+ // some server might get activated and it's better if at that time
+ // the registry replicas (at least the ones which are up) have all
+ // established their session with the node.
+ //
+ try
+ {
+ if(session)
+ {
+ session->loadServers();
+ _node->setObserver(session->getObserver());
+ _node->checkConsistency(session);
+ }
+ else
+ {
+ _node->setObserver(0);
+ }
+ }
+ catch(const Ice::LocalException&)
+ {
+ // IGNORE
+ }
+
return session;
}
diff --git a/cpp/src/IceGrid/NodeSessionManager.h b/cpp/src/IceGrid/NodeSessionManager.h
index 5188fb36409..a06d1f4e2c2 100644
--- a/cpp/src/IceGrid/NodeSessionManager.h
+++ b/cpp/src/IceGrid/NodeSessionManager.h
@@ -55,6 +55,8 @@ public:
NodeSessionKeepAliveThreadPtr replicaAdded(const InternalRegistryPrx&);
void replicaRemoved(const InternalRegistryPrx&);
+ NodeSessionPrx getMasterNodeSession() const { return _thread->getSession(); }
+
private:
void syncReplicas(const InternalRegistryPrxSeq&);
diff --git a/cpp/src/IceGrid/ReapThread.cpp b/cpp/src/IceGrid/ReapThread.cpp
index f9f89e65765..22be3410b1e 100644
--- a/cpp/src/IceGrid/ReapThread.cpp
+++ b/cpp/src/IceGrid/ReapThread.cpp
@@ -26,7 +26,13 @@ ReapThread::run()
{
{
Lock sync(*this);
+ if(_terminated)
+ {
+ break;
+ }
+
calcWakeInterval();
+
//
// If the wake interval is zero then we wait forever.
//
diff --git a/cpp/src/IceGrid/RegistryI.cpp b/cpp/src/IceGrid/RegistryI.cpp
index 737277e9412..6c8ca721618 100644
--- a/cpp/src/IceGrid/RegistryI.cpp
+++ b/cpp/src/IceGrid/RegistryI.cpp
@@ -258,10 +258,10 @@ RegistryI::start(bool nowarn)
registryTopicManagerId,
"Registry");
- int timeout = properties->getPropertyAsIntWithDefault("IceGrid.Registry.NodeSessionTimeout", 10);
- timeout = properties->getPropertyAsIntWithDefault("IceGrid.Registry.InternalSessionTimeout", timeout);
+ int t = properties->getPropertyAsIntWithDefault("IceGrid.Registry.NodeSessionTimeout", 10);
+ t = properties->getPropertyAsIntWithDefault("IceGrid.Registry.InternalSessionTimeout", t);
- _database = new Database(registryAdapter, _iceStorm->getTopicManager(), _instanceName, timeout, _traceLevels);
+ _database = new Database(registryAdapter, _iceStorm->getTopicManager(), _instanceName, t, _traceLevels, _master);
_wellKnownObjects = new WellKnownObjectsManager(_database);
InternalRegistryPrx internalRegistry;
diff --git a/cpp/src/IceGrid/ReplicaCache.cpp b/cpp/src/IceGrid/ReplicaCache.cpp
index e60fd1a21e8..8eb940fa669 100644
--- a/cpp/src/IceGrid/ReplicaCache.cpp
+++ b/cpp/src/IceGrid/ReplicaCache.cpp
@@ -88,24 +88,11 @@ ReplicaCache::remove(const string& name)
Ice::Trace out(_traceLevels->logger, _traceLevels->replicaCat);
out << "replica `" << name << "' down";
}
- }
- {
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(_waitForUpdatesMonitor);
- map<string, set<string> >::iterator p = _waitForUpdates.begin();
- while(p != _waitForUpdates.end())
- {
- p->second.erase(name);
- if(p->second.empty())
- {
- _waitForUpdates.erase(p++);
- _waitForUpdatesMonitor.notifyAll();
- }
- else
- {
- ++p;
- }
- }
+ //
+ // Remove the replica expected updates.
+ //
+ removeReplicaUpdates(name);
}
try
@@ -193,13 +180,17 @@ ReplicaCache::getEndpoints(const string& name, const Ice::ObjectPrx& proxy) cons
void
ReplicaCache::waitForUpdateReplication(const string& name, int serial)
{
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(_waitForUpdatesMonitor);
-
- vector<string> replicas = getAll("");
- if(replicas.empty())
+ Lock sync(*this);
+ if(_entries.empty())
{
return;
}
+
+ vector<string> replicas;
+ for(map<string, ReplicaEntryPtr>::const_iterator s = _entries.begin(); s != _entries.end(); ++s)
+ {
+ replicas.push_back(s->first);
+ }
ostringstream os;
os << name << "-" << serial;
@@ -215,19 +206,33 @@ ReplicaCache::waitForUpdateReplication(const string& name, int serial)
map<string, set<string> >::const_iterator p = _waitForUpdates.find(key);
if(p == _waitForUpdates.end())
{
+ map<string, map<string, string> >::iterator q = _updateFailures.find(key);
+ if(q != _updateFailures.end())
+ {
+ map<string, string> failures = q->second;
+ _updateFailures.erase(q);
+
+ ostringstream os;
+ for(map<string, string>::const_iterator r = failures.begin(); r != failures.end(); ++r)
+ {
+ os << "replication failed on replica `" << r->first << "':\n" << r->second << "\n";
+ }
+ Ice::Error err(_traceLevels->logger);
+ err << os.str();
+ }
return;
}
else
{
- _waitForUpdatesMonitor.wait();
+ wait();
}
}
}
void
-ReplicaCache::replicaReceivedUpdate(const string& name, const string& update, int serial)
+ReplicaCache::replicaReceivedUpdate(const string& name, const string& update, int serial, const string& failure)
{
- IceUtil::Monitor<IceUtil::Mutex>::Lock sync(_waitForUpdatesMonitor);
+ Lock sync(*this);
ostringstream os;
os << update << "-" << serial;
@@ -237,12 +242,87 @@ ReplicaCache::replicaReceivedUpdate(const string& name, const string& update, in
if(p != _waitForUpdates.end())
{
p->second.erase(name);
+
+ if(!failure.empty())
+ {
+ map<string, map<string, string> >::iterator q = _updateFailures.find(key);
+ if(q == _updateFailures.end())
+ {
+ q = _updateFailures.insert(make_pair(key, map<string ,string>())).first;
+ }
+ q->second.insert(make_pair(name, failure));
+ }
+
if(p->second.empty())
{
_waitForUpdates.erase(p);
- _waitForUpdatesMonitor.notifyAll();
+ notifyAll();
+ }
+ }
+}
+
+void
+ReplicaCache::startApplicationReplication(const string& application, int revision)
+{
+ //
+ // Add the given application to the set of application being
+ // replicated.
+ //
+ Lock sync(*this);
+ _applicationReplication.insert(application);
+}
+
+
+void
+ReplicaCache::finishApplicationReplication(const string& application, int revision)
+{
+ //
+ // Notify waiting threads that the given application replication
+ // is completed.
+ //
+ Lock sync(*this);
+ _applicationReplication.erase(application);
+ notifyAll();
+}
+
+void
+ReplicaCache::waitForApplicationReplication(const string& application, int revision)
+{
+ //
+ // Wait for the given application to be replicated.
+ //
+ Lock sync(*this);
+ while(_applicationReplication.find(application) != _applicationReplication.end())
+ {
+ wait();
+ }
+}
+
+void
+ReplicaCache::removeReplicaUpdates(const string& name)
+{
+ // Must b called within the synchronization.
+
+ map<string, set<string> >::iterator p = _waitForUpdates.begin();
+ bool notifyMonitor = false;
+ while(p != _waitForUpdates.end())
+ {
+ p->second.erase(name);
+ if(p->second.empty())
+ {
+ _waitForUpdates.erase(p++);
+ notifyMonitor = true;
+ }
+ else
+ {
+ ++p;
}
}
+
+ if(notifyMonitor)
+ {
+ notifyAll();
+ }
}
ReplicaEntry::ReplicaEntry(const std::string& name, const ReplicaSessionIPtr& session) :
diff --git a/cpp/src/IceGrid/ReplicaCache.h b/cpp/src/IceGrid/ReplicaCache.h
index 19aa8dcbc81..837a472c093 100644
--- a/cpp/src/IceGrid/ReplicaCache.h
+++ b/cpp/src/IceGrid/ReplicaCache.h
@@ -59,16 +59,23 @@ public:
Ice::ObjectPrx getEndpoints(const std::string&, const Ice::ObjectPrx&) const;
void waitForUpdateReplication(const std::string&, int);
- void replicaReceivedUpdate(const std::string&, const std::string&, int);
+ void replicaReceivedUpdate(const std::string&, const std::string&, int, const std::string&);
+
+ void startApplicationReplication(const std::string&, int);
+ void finishApplicationReplication(const std::string&, int);
+ void waitForApplicationReplication(const std::string&, int);
private:
+ void removeReplicaUpdates(const std::string&);
+
const Ice::CommunicatorPtr _communicator;
const IceStorm::TopicPrx _topic;
const NodePrx _nodes;
- IceUtil::Monitor<IceUtil::Mutex> _waitForUpdatesMonitor;
std::map<std::string, std::set<std::string> > _waitForUpdates;
+ std::map<std::string, std::map<std::string, std::string> > _updateFailures;
+ std::set<std::string> _applicationReplication;
};
};
diff --git a/cpp/src/IceGrid/ReplicaSessionI.cpp b/cpp/src/IceGrid/ReplicaSessionI.cpp
index bbd70958f26..ecc9789c6f4 100644
--- a/cpp/src/IceGrid/ReplicaSessionI.cpp
+++ b/cpp/src/IceGrid/ReplicaSessionI.cpp
@@ -107,9 +107,9 @@ ReplicaSessionI::setAdapterDirectProxy(const string& adapterId,
}
void
-ReplicaSessionI::receivedUpdate(const string& update, int serial, const Ice::Current&)
+ReplicaSessionI::receivedUpdate(const string& update, int serial, const string& failure, const Ice::Current&)
{
- _database->replicaReceivedUpdate(_name, update, serial);
+ _database->replicaReceivedUpdate(_name, update, serial, failure);
}
void
diff --git a/cpp/src/IceGrid/ReplicaSessionI.h b/cpp/src/IceGrid/ReplicaSessionI.h
index bc29fe5d959..737ff4aa656 100644
--- a/cpp/src/IceGrid/ReplicaSessionI.h
+++ b/cpp/src/IceGrid/ReplicaSessionI.h
@@ -38,7 +38,7 @@ public:
virtual void registerWellKnownObjects(const ObjectInfoSeq&, const Ice::Current&);
virtual void setAdapterDirectProxy(const std::string&, const std::string&, const Ice::ObjectPrx&,
const Ice::Current&);
- virtual void receivedUpdate(const std::string&, int, const Ice::Current&);
+ virtual void receivedUpdate(const std::string&, int, const std::string&, const Ice::Current&);
virtual void destroy(const Ice::Current&);
virtual IceUtil::Time timestamp() const;
diff --git a/cpp/src/IceGrid/ReplicaSessionManager.cpp b/cpp/src/IceGrid/ReplicaSessionManager.cpp
index b6d099aad77..ab6895945f1 100644
--- a/cpp/src/IceGrid/ReplicaSessionManager.cpp
+++ b/cpp/src/IceGrid/ReplicaSessionManager.cpp
@@ -38,36 +38,58 @@ public:
virtual void
applicationAdded(int, const ApplicationInfo& application, const Ice::Current& current)
{
+ string failure;
try
{
_database->addApplication(application);
}
catch(const DeploymentException& ex)
{
- cerr << ex.reason << endl;
+ ostringstream os;
+ os << ex << ":\n" << ex.reason;
+ failure = os.str();
}
- _manager.receivedUpdate("application", getSerial(current.ctx, "application"));
+ _manager.receivedUpdate("application", getSerial(current.ctx, "application"), failure);
}
virtual void
applicationRemoved(int, const std::string& name, const Ice::Current& current)
{
+ string failure;
try
{
_database->removeApplication(name);
}
- catch(const Ice::Exception& ex)
+ catch(const ApplicationNotExistException& ex)
{
- cerr << ex << endl;
+ ostringstream os;
+ os << ex << ":\napplication: " << ex.name;
+ failure = os.str();
}
- _manager.receivedUpdate("application", getSerial(current.ctx, "application"));
+ _manager.receivedUpdate("application", getSerial(current.ctx, "application"), failure);
}
virtual void
applicationUpdated(int, const ApplicationUpdateInfo& update, const Ice::Current& current)
{
- _database->updateApplication(update);
- _manager.receivedUpdate("application", getSerial(current.ctx, "application"));
+ string failure;
+ try
+ {
+ _database->updateApplication(update);
+ }
+ catch(const DeploymentException& ex)
+ {
+ ostringstream os;
+ os << ex << ":\n" << ex.reason;
+ failure = os.str();
+ }
+ catch(const ApplicationNotExistException& ex)
+ {
+ ostringstream os;
+ os << ex << ":\napplication: " << ex.name;
+ failure = os.str();
+ }
+ _manager.receivedUpdate("application", getSerial(current.ctx, "application"), failure);
}
virtual void
@@ -79,22 +101,34 @@ public:
virtual void
adapterAdded(const AdapterInfo& info, const Ice::Current& current)
{
- _database->setAdapterDirectProxy(info.id, info.replicaGroupId, info.proxy);
- _manager.receivedUpdate("adapter", getSerial(current.ctx, "adapter"));
+ string failure;
+ if(!_database->setAdapterDirectProxy(info.id, info.replicaGroupId, info.proxy))
+ {
+ failure = "adapter `" + info.id + "' already exists and belongs to an application";
+ }
+ _manager.receivedUpdate("adapter", getSerial(current.ctx, "adapter"), failure);
}
virtual void
adapterUpdated(const AdapterInfo& info, const Ice::Current& current)
{
- _database->setAdapterDirectProxy(info.id, info.replicaGroupId, info.proxy);
- _manager.receivedUpdate("adapter", getSerial(current.ctx, "adapter"));
+ string failure;
+ if(!_database->setAdapterDirectProxy(info.id, info.replicaGroupId, info.proxy))
+ {
+ failure = "adapter `" + info.id + "' already exists and belongs to an application";
+ }
+ _manager.receivedUpdate("adapter", getSerial(current.ctx, "adapter"), failure);
}
virtual void
adapterRemoved(const std::string& id, const Ice::Current& current)
{
- _database->setAdapterDirectProxy(id, "", 0);
- _manager.receivedUpdate("adapter", getSerial(current.ctx, "adapter"));
+ string failure;
+ if(!_database->setAdapterDirectProxy(id, "", 0))
+ {
+ failure = "adapter `" + id + "' already exists and belongs to an application";
+ }
+ _manager.receivedUpdate("adapter", getSerial(current.ctx, "adapter"), failure);
}
virtual void
@@ -106,22 +140,56 @@ public:
virtual void
objectAdded(const ObjectInfo& info, const Ice::Current& current)
{
- _database->addObject(info, false);
- _manager.receivedUpdate("object", getSerial(current.ctx, "object"));
+ string failure;
+ try
+ {
+ _database->addObject(info, true);
+ }
+ catch(const ObjectExistsException& ex)
+ {
+ ostringstream os;
+ os << ex << ":\n";
+ os << "id: " << info.proxy->ice_getCommunicator()->identityToString(info.proxy->ice_getIdentity());
+ failure = os.str();
+ }
+ _manager.receivedUpdate("object", getSerial(current.ctx, "object"), failure);
}
virtual void
objectUpdated(const ObjectInfo& info, const Ice::Current& current)
{
- _database->updateObject(info.proxy);
- _manager.receivedUpdate("object", getSerial(current.ctx, "object"));
+ string failure;
+ try
+ {
+ _database->addObject(info, true);
+ }
+ catch(const DeploymentException& ex)
+ {
+ ostringstream os;
+ os << ex << ":\n" << ex.reason;
+ failure = os.str();
+ }
+ _manager.receivedUpdate("object", getSerial(current.ctx, "object"), failure);
}
virtual void
objectRemoved(const Ice::Identity& id, const Ice::Current& current)
{
- _database->removeObject(id);
- _manager.receivedUpdate("object", getSerial(current.ctx, "object"));
+ string failure;
+ try
+ {
+ _database->removeObject(id);
+ }
+ catch(const DeploymentException& ex)
+ {
+ ostringstream os;
+ os << ex << ":\n" << ex.reason;
+ failure = os.str();
+ }
+ catch(const ObjectNotRegisteredException& ex)
+ {
+ }
+ _manager.receivedUpdate("object", getSerial(current.ctx, "object"), failure);
}
private:
@@ -237,12 +305,22 @@ ReplicaSessionManager::destroy()
}
void
-ReplicaSessionManager::receivedUpdate(const string& update, int serial)
+ReplicaSessionManager::receivedUpdate(const string& update, int serial, const string& failure)
{
ReplicaSessionPrx session = _thread->getSession();
if(session)
{
- session->receivedUpdate(update, serial);
+ try
+ {
+ session->receivedUpdate(update, serial, failure);
+ }
+ catch(const Ice::LocalException&)
+ {
+ }
+ }
+ if(!failure.empty())
+ {
+ _thread->destroyActiveSession();
}
}
@@ -312,7 +390,7 @@ ReplicaSessionManager::createSession(const InternalRegistryPrx& registry, IceUti
int t = session->getTimeout();
if(t > 0)
{
- timeout = IceUtil::Time::seconds(t);
+ timeout = IceUtil::Time::seconds(t / 2);
}
//
diff --git a/cpp/src/IceGrid/ReplicaSessionManager.h b/cpp/src/IceGrid/ReplicaSessionManager.h
index 3821e74557e..a1bc90bf326 100644
--- a/cpp/src/IceGrid/ReplicaSessionManager.h
+++ b/cpp/src/IceGrid/ReplicaSessionManager.h
@@ -41,7 +41,7 @@ public:
NodePrxSeq getNodes() const;
void destroy();
- void receivedUpdate(const std::string&, int);
+ void receivedUpdate(const std::string&, int, const std::string&);
void registerAllWellKnownObjects();
ReplicaSessionPrx getSession() const { return _thread->getSession(); }
diff --git a/cpp/src/IceGrid/ServerCache.cpp b/cpp/src/IceGrid/ServerCache.cpp
index 60f15774c7b..d76972f32f0 100644
--- a/cpp/src/IceGrid/ServerCache.cpp
+++ b/cpp/src/IceGrid/ServerCache.cpp
@@ -93,7 +93,8 @@ ServerCache::add(const ServerInfo& info)
if(_traceLevels && _traceLevels->server > 0)
{
Ice::Trace out(_traceLevels->logger, _traceLevels->serverCat);
- out << "added server `" << info.descriptor->id << "'";
+
+ out << "added server `" << info.descriptor->id << "' (`" << info.uuid << "', `" << info.revision << "')";
}
return entry;
@@ -598,7 +599,7 @@ ServerEntry::syncImpl(bool waitForUpdate)
{
try
{
- _cache.getNodeCache().get(destroy.node)->destroyServer(this, destroy.descriptor->id);
+ _cache.getNodeCache().get(destroy.node)->destroyServer(this, destroy);
}
catch(NodeNotExistException&)
{
@@ -704,7 +705,7 @@ ServerEntry::loadCallback(const ServerPrx& proxy, const AdapterPrxDict& adpts, i
{
try
{
- _cache.getNodeCache().get(destroy.node)->destroyServer(this, destroy.descriptor->id);
+ _cache.getNodeCache().get(destroy.node)->destroyServer(this, destroy);
}
catch(NodeNotExistException&)
{
@@ -896,6 +897,22 @@ ServerEntry::allocated(const SessionIPtr& session)
}
void
+ServerEntry::allocatedNoSync(const SessionIPtr& session)
+{
+ {
+ Lock sync(*this);
+ if(!_updated ||
+ _loaded.get() && _loaded->descriptor->activation != "session" ||
+ _load.get() && _load->descriptor->activation != "session")
+ {
+ return;
+ }
+ }
+
+ syncImpl(true); // We sync here to ensure the "session" server will be activated.
+}
+
+void
ServerEntry::released(const SessionIPtr& session)
{
assert(_loaded.get() || _load.get());
@@ -969,29 +986,18 @@ ServerEntry::released(const SessionIPtr& session)
}
}
-bool
-ServerEntry::release(const SessionIPtr& session, bool fromRelease)
+void
+ServerEntry::releaseNoSync(const SessionIPtr& session)
{
- bool released = Allocatable::release(session, fromRelease);
-
- //
- // If this server was released (and not from another release
- // call), we check if it needs to be synced.
- //
- if(released && !fromRelease)
{
+ Lock sync(*this);
+ if(!_updated ||
+ _loaded.get() && _loaded->descriptor->activation != "session" ||
+ _load.get() && _load->descriptor->activation != "session")
{
- Lock sync(*this);
- if(!_updated ||
- _loaded.get() && _loaded->descriptor->activation != "session" ||
- _load.get() && _load->descriptor->activation != "session")
- {
- return true;
- }
+ return;
}
-
- syncImpl(false); // We sync here to ensure the "session" server will be shutdown.
}
-
- return released;
+
+ syncImpl(false); // We sync here to ensure the "session" server will be shutdown.
}
diff --git a/cpp/src/IceGrid/ServerCache.h b/cpp/src/IceGrid/ServerCache.h
index eccf5485fa2..ce19eec144a 100644
--- a/cpp/src/IceGrid/ServerCache.h
+++ b/cpp/src/IceGrid/ServerCache.h
@@ -58,8 +58,9 @@ public:
void exception(const Ice::Exception&);
virtual void allocated(const SessionIPtr&);
+ virtual void allocatedNoSync(const SessionIPtr&);
virtual void released(const SessionIPtr&);
- virtual bool release(const SessionIPtr&, bool);
+ virtual void releaseNoSync(const SessionIPtr&);
private:
diff --git a/cpp/src/IceGrid/ServerI.cpp b/cpp/src/IceGrid/ServerI.cpp
index 2fca2d0c00d..9c24a7a2dec 100644
--- a/cpp/src/IceGrid/ServerI.cpp
+++ b/cpp/src/IceGrid/ServerI.cpp
@@ -151,7 +151,9 @@ public:
catch(const ServerStartException& ex)
{
Ice::Error out(_traceLevels->logger);
- out << "couldn't reactivate server `" + _server->getId() + "' with `always' activation mode after failure:\n" << ex.reason;
+ out << "couldn't reactivate server `" << _server->getId()
+ << "' with `always' activation mode after failure:\n"
+ << ex.reason;
}
}
}
@@ -162,6 +164,31 @@ private:
const TraceLevelsPtr _traceLevels;
};
+class WaitForApplicationReplicationCB : public AMI_NodeSession_waitForApplicationReplication
+{
+public:
+
+ WaitForApplicationReplicationCB(const ServerIPtr& server) : _server(server)
+ {
+ }
+
+ virtual void
+ ice_response()
+ {
+ _server->activate();
+ }
+
+ virtual void
+ ice_exception(const Ice::Exception&)
+ {
+ _server->activate();
+ }
+
+private:
+
+ const ServerIPtr _server;
+};
+
struct EnvironmentEval : std::unary_function<string, string>
{
string
@@ -837,6 +864,12 @@ ServerI::start(ServerActivation activation, const AMD_Server_startPtr& amdCB)
}
else if(_state == Active)
{
+ if(activation == Always)
+ {
+ return; // Nothing to do, it's already active (and we
+ // don't want to throw because it would be
+ // considered as an error.)
+ }
throw ServerStartException(_id, "The server is already active.");
}
else if(_state == Destroying)
@@ -885,12 +918,13 @@ ServerI::load(const AMD_Node_loadServerPtr& amdCB, const ServerInfo& info, bool
// In any case, we update the server application revision if
// it needs to be updated.
//
- if(!fromMaster)
+ if(!_info.uuid.empty() && !fromMaster)
{
if(_info.uuid != info.uuid)
{
- throw DeploymentException("server descriptor from replica is from another application (`" +
- info.uuid + "'");
+ DeploymentException ex;
+ ex.reason = "server descriptor from replica is from another application (`" + info.uuid + "')";
+ throw ex;
}
else if(_info.revision > info.revision)
{
@@ -902,7 +936,18 @@ ServerI::load(const AMD_Node_loadServerPtr& amdCB, const ServerInfo& info, bool
}
}
- if(_info.descriptor && _info.sessionId == info.sessionId &&
+ //
+ // Otherwise, if the following conditions are met:
+ //
+ // - the server is already loaded.
+ // - the descriptor is from the master and the session id didn't change or it's coming from a slave.
+ // - the descriptor is the same as the one loaded.
+ //
+ // we don't re-load the server. We just return the server
+ // proxy and the proxies of its adapters.
+ //
+ if(_info.descriptor &&
+ (!fromMaster || _info.sessionId == info.sessionId) &&
(_info.uuid == info.uuid && _info.revision == info.revision ||
descriptorEqual(_node->getCommunicator(), _info.descriptor, info.descriptor)))
{
@@ -956,11 +1001,35 @@ ServerI::load(const AMD_Node_loadServerPtr& amdCB, const ServerInfo& info, bool
}
void
-ServerI::destroy(const AMD_Node_destroyServerPtr& amdCB)
+ServerI::destroy(const AMD_Node_destroyServerPtr& amdCB, const string& uuid, int revision)
{
ServerCommandPtr command;
{
Lock sync(*this);
+ if(!uuid.empty()) // Empty if from checkConsistency.
+ {
+ if(_info.uuid.empty())
+ {
+ DeploymentException ex;
+ ex.reason = "server doesn't exist (`" + uuid + "')";
+ throw ex;
+ }
+ else if(_info.uuid != uuid)
+ {
+ DeploymentException ex;
+ ex.reason = "server descriptor from replica is from another application (`" + uuid + "')";
+ throw ex;
+ }
+ else if(_info.revision > revision)
+ {
+ ostringstream os;
+ os << "server descriptor from replica is too old:\n";
+ os << "current revision: " << _info.revision << "\n";
+ os << "replica revision: " << revision;
+ throw DeploymentException(os.str());
+ }
+ }
+
if(!_destroy)
{
_destroy = new DestroyCommand(this, _state != Inactive && _state != Loading && _state != Patching);
@@ -1180,8 +1249,10 @@ ServerI::activationFailed(bool destroyed)
void
ServerI::activate()
{
- ServerDescriptorPtr desc;
+ ServerInfo info;
ServerAdapterDict adpts;
+ bool waitForReplication;
+
#ifndef _WIN32
uid_t uid;
gid_t gid;
@@ -1189,8 +1260,18 @@ ServerI::activate()
{
Lock sync(*this);
assert(_state == Activating && _info.descriptor);
- desc = _info.descriptor;
+ info = _info;
adpts = _adapters;
+
+ //
+ // The first time the server is started, we ensure that the
+ // replication of its descriptor is completed. This is to make
+ // sure all the replicas are up to date when the server
+ // starts for the first time with a given descriptor.
+ //
+ waitForReplication = _waitForReplication;
+ _waitForReplication = false;
+
#ifndef _WIN32
uid = _uid;
gid = _gid;
@@ -1198,8 +1279,25 @@ ServerI::activate()
}
//
+ // We first ensure that the application is replicated on all the
+ // registries before to start the server. We only do this each
+ // time the server is updated or the initialy loaded on the node.
+ //
+ if(waitForReplication)
+ {
+ NodeSessionPrx session = _node->getMasterNodeSession();
+ if(session)
+ {
+ AMI_NodeSession_waitForApplicationReplicationPtr cb = new WaitForApplicationReplicationCB(this);
+ _node->getMasterNodeSession()->waitForApplicationReplication_async(cb, info.uuid, info.revision);
+ return;
+ }
+ }
+
+ //
// Compute the server command line options.
//
+ ServerDescriptorPtr desc = info.descriptor;
Ice::StringSeq options;
copy(desc->options.begin(), desc->options.end(), back_inserter(options));
options.push_back("--Ice.Config=" + _serverDir + "/config/config");
@@ -1608,6 +1706,7 @@ ServerI::updateImpl(const ServerInfo& info)
assert(_load);
_info = info;
+ _waitForReplication = true;
if(!_info.descriptor)
{
@@ -2157,7 +2256,8 @@ ServerI::setStateNoSync(InternalServerState st, const std::string& reason)
}
else if(_state == Inactive)
{
- if(_activation == Disabled && _previousActivation == Always &&
+ if(_activation == Always ||
+ _activation == Disabled && _previousActivation == Always &&
_disableOnFailure > 0 && _failureTime != IceUtil::Time())
{
//
@@ -2168,15 +2268,16 @@ ServerI::setStateNoSync(InternalServerState st, const std::string& reason)
// callback is executed.
//
_timer = new DelayedStart(this, _node->getTraceLevels());
- _node->getWaitQueue()->add(_timer, IceUtil::Time::seconds(_disableOnFailure) + IceUtil::Time::milliSeconds(500));
- }
- else if(_activation == Always)
- {
- if(!_start)
- {
- _start = new StartCommand(this, _node->getWaitQueue(), _activationTimeout);
- }
- }
+ _node->getWaitQueue()->add(_timer,
+ IceUtil::Time::seconds(_disableOnFailure) + IceUtil::Time::milliSeconds(500));
+ }
+// else if(_activation == Always)
+// {
+// if(!_start)
+// {
+// _start = new StartCommand(this, _node->getWaitQueue(), _activationTimeout);
+// }
+// }
}
//
diff --git a/cpp/src/IceGrid/ServerI.h b/cpp/src/IceGrid/ServerI.h
index f4851a0cae1..60377b48e96 100644
--- a/cpp/src/IceGrid/ServerI.h
+++ b/cpp/src/IceGrid/ServerI.h
@@ -90,7 +90,7 @@ public:
void start(ServerActivation, const AMD_Server_startPtr& = AMD_Server_startPtr());
void load(const AMD_Node_loadServerPtr&, const ServerInfo&, bool);
- void destroy(const AMD_Node_destroyServerPtr&);
+ void destroy(const AMD_Node_destroyServerPtr&, const std::string&, int);
bool startPatch(bool);
bool waitForPatch();
void finishPatch();
@@ -153,6 +153,7 @@ private:
IceUtil::Time _failureTime;
ServerActivation _previousActivation;
WaitItemPtr _timer;
+ bool _waitForReplication;
DestroyCommandPtr _destroy;
StopCommandPtr _stop;
diff --git a/cpp/src/IceGrid/SessionManager.h b/cpp/src/IceGrid/SessionManager.h
index da7b837cb2b..fc358d19a87 100644
--- a/cpp/src/IceGrid/SessionManager.h
+++ b/cpp/src/IceGrid/SessionManager.h
@@ -28,6 +28,7 @@ class SessionKeepAliveThread : public IceUtil::Thread, public IceUtil::Monitor<I
Disconnected,
Connected,
Retry,
+ DestroySession,
Destroyed
};
@@ -46,6 +47,7 @@ public:
FPrx factory = _factory;
bool updateState = false;
IceUtil::Time timeout = IceUtil::Time::seconds(10);
+ bool destroy = false;
while(true)
{
@@ -116,9 +118,9 @@ public:
{
Lock sync(*this);
- if(_state != Destroyed && _state != Retry)
+ if(_state == Connected || _state == Disconnected)
{
- timedWait(timeout); // TODO: XXX: Timeout / 2 instead?
+ timedWait(timeout);
}
if(_state == Destroyed)
@@ -126,9 +128,22 @@ public:
break;
}
- updateState = _state == Retry;
+ if(_state == DestroySession && session)
+ {
+ destroy = true;
+ }
+
+ updateState = _state == Retry || _state == DestroySession;
factory = _factory;
}
+
+ if(destroy)
+ {
+ assert(session);
+ destroySession(session);
+ destroy = false;
+ session = 0;
+ }
}
//
@@ -184,6 +199,14 @@ public:
}
void
+ destroyActiveSession()
+ {
+ Lock sync(*this);
+ _state = DestroySession;
+ notifyAll();
+ }
+
+ void
terminate()
{
Lock sync(*this);
diff --git a/cpp/src/IceGrid/Topics.cpp b/cpp/src/IceGrid/Topics.cpp
index 6fd3f381a4e..6eebdae97bc 100644
--- a/cpp/src/IceGrid/Topics.cpp
+++ b/cpp/src/IceGrid/Topics.cpp
@@ -197,7 +197,15 @@ RegistryObserverTopic::registryUp(const RegistryInfo& info)
}
updateSerial(_serial + 1);
_registries.insert(make_pair(info.name, info));
- _publisher->registryUp(info);
+ try
+ {
+ _publisher->registryUp(info);
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `registryUp' update:\n" << ex;
+ }
}
void
@@ -212,7 +220,15 @@ RegistryObserverTopic::registryDown(const string& name)
if(_registries.find(name) != _registries.end())
{
_registries.erase(name);
- _publisher->registryDown(name);
+ try
+ {
+ _publisher->registryDown(name);
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `registryDown' update:\n" << ex;
+ }
}
}
@@ -265,7 +281,15 @@ NodeObserverTopic::nodeUp(const NodeDynamicInfo& info, const Ice::Current& curre
}
updateSerial(_serial + 1);
_nodes.insert(make_pair(info.info.name, info));
- _publisher->nodeUp(info);
+ try
+ {
+ _publisher->nodeUp(info);
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing 'nodeUp' update:\n" << ex;
+ }
}
void
@@ -316,7 +340,15 @@ NodeObserverTopic::updateServer(const string& node, const ServerDynamicInfo& ser
servers.push_back(server);
}
- _publisher->updateServer(node, server);
+ try
+ {
+ _publisher->updateServer(node, server);
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `updateServer' update:\n" << ex;
+ }
}
void
@@ -361,7 +393,15 @@ NodeObserverTopic::updateAdapter(const string& node, const AdapterDynamicInfo& a
adapters.push_back(adapter);
}
- _publisher->updateAdapter(node, adapter);
+ try
+ {
+ _publisher->updateAdapter(node, adapter);
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `updateAdapter' update:\n" << ex;
+ }
}
void
@@ -378,7 +418,15 @@ NodeObserverTopic::nodeDown(const string& name)
if(_nodes.find(name) != _nodes.end())
{
_nodes.erase(name);
- _publisher->nodeDown(name);
+ try
+ {
+ _publisher->nodeDown(name);
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `nodeDown' update:\n" << ex;
+ }
}
}
@@ -422,7 +470,15 @@ ApplicationObserverTopic::applicationInit(int serial, const ApplicationInfoSeq&
{
_applications.insert(make_pair(p->descriptor.name, *p));
}
- _publisher->applicationInit(serial, apps, getContext("application", serial));
+ try
+ {
+ _publisher->applicationInit(serial, apps, getContext("application", serial));
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `applicationInit' update:\n" << ex;
+ }
}
void
@@ -435,7 +491,15 @@ ApplicationObserverTopic::applicationAdded(int serial, const ApplicationInfo& in
}
updateSerial(serial);
_applications.insert(make_pair(info.descriptor.name, info));
- _publisher->applicationAdded(serial, info, getContext("application", serial));
+ try
+ {
+ _publisher->applicationAdded(serial, info, getContext("application", serial));
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `applicationAdded' update:\n" << ex;
+ }
}
void
@@ -448,7 +512,15 @@ ApplicationObserverTopic::applicationRemoved(int serial, const string& name)
}
updateSerial(serial);
_applications.erase(name);
- _publisher->applicationRemoved(serial, name, getContext("application", serial));
+ try
+ {
+ _publisher->applicationRemoved(serial, name, getContext("application", serial));
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `applicationRemoved' update:\n" << ex;
+ }
}
void
@@ -492,7 +564,15 @@ ApplicationObserverTopic::applicationUpdated(int serial, const ApplicationUpdate
{
assert(false);
}
- _publisher->applicationUpdated(serial, info, getContext("application", serial));
+ try
+ {
+ _publisher->applicationUpdated(serial, info, getContext("application", serial));
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `applicationUpdated' update:\n" << ex;
+ }
}
void
@@ -537,7 +617,15 @@ AdapterObserverTopic::adapterInit(int serial, const AdapterInfoSeq& adpts)
{
_adapters.insert(make_pair(q->id, *q));
}
- _publisher->adapterInit(adpts, getContext("adapter", serial));
+ try
+ {
+ _publisher->adapterInit(adpts, getContext("adapter", serial));
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `adapterInit' update:\n" << ex;
+ }
}
void
@@ -550,7 +638,15 @@ AdapterObserverTopic::adapterAdded(int serial, const AdapterInfo& info)
}
updateSerial(serial);
_adapters.insert(make_pair(info.id, info));
- _publisher->adapterAdded(info, getContext("adapter", serial));
+ try
+ {
+ _publisher->adapterAdded(info, getContext("adapter", serial));
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `adapterAdded' update:\n" << ex;
+ }
}
void
@@ -563,7 +659,15 @@ AdapterObserverTopic::adapterUpdated(int serial, const AdapterInfo& info)
}
updateSerial(serial);
_adapters[info.id] = info;
- _publisher->adapterUpdated(info, getContext("adapter", serial));
+ try
+ {
+ _publisher->adapterUpdated(info, getContext("adapter", serial));
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `adapterUpdated' update:\n" << ex;
+ }
}
void
@@ -576,7 +680,15 @@ AdapterObserverTopic::adapterRemoved(int serial, const string& id)
}
updateSerial(serial);
_adapters.erase(id);
- _publisher->adapterRemoved(id, getContext("adapter", serial));
+ try
+ {
+ _publisher->adapterRemoved(id, getContext("adapter", serial));
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `adapterRemoved' update:\n" << ex;
+ }
}
void
@@ -620,7 +732,15 @@ ObjectObserverTopic::objectInit(int serial, const ObjectInfoSeq& objects)
{
_objects.insert(make_pair(r->proxy->ice_getIdentity(), *r));
}
- _publisher->objectInit(objects, getContext("object", serial));
+ try
+ {
+ _publisher->objectInit(objects, getContext("object", serial));
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `objectInit' update:\n" << ex;
+ }
}
void
@@ -633,7 +753,15 @@ ObjectObserverTopic::objectAdded(int serial, const ObjectInfo& info)
}
updateSerial(serial);
_objects.insert(make_pair(info.proxy->ice_getIdentity(), info));
- _publisher->objectAdded(info, getContext("object", serial));
+ try
+ {
+ _publisher->objectAdded(info, getContext("object", serial));
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `objectAdded' update:\n" << ex;
+ }
}
void
@@ -646,7 +774,15 @@ ObjectObserverTopic::objectUpdated(int serial, const ObjectInfo& info)
}
updateSerial(serial);
_objects[info.proxy->ice_getIdentity()] = info;
- _publisher->objectUpdated(info, getContext("object", serial));
+ try
+ {
+ _publisher->objectUpdated(info, getContext("object", serial));
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `objectUpdated' update:\n" << ex;
+ }
}
void
@@ -659,7 +795,15 @@ ObjectObserverTopic::objectRemoved(int serial, const Ice::Identity& id)
}
updateSerial(serial);
_objects.erase(id);
- _publisher->objectRemoved(id, getContext("object", serial));
+ try
+ {
+ _publisher->objectRemoved(id, getContext("object", serial));
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ Ice::Warning out(_publisher->ice_getCommunicator()->getLogger());
+ out << "unexpected exception while publishing `objectRemoved' update:\n" << ex;
+ }
}
void
diff --git a/cpp/test/IceGrid/activation/AllTests.cpp b/cpp/test/IceGrid/activation/AllTests.cpp
index ce9f4272a50..83879b90048 100644
--- a/cpp/test/IceGrid/activation/AllTests.cpp
+++ b/cpp/test/IceGrid/activation/AllTests.cpp
@@ -146,6 +146,20 @@ allTests(const Ice::CommunicatorPtr& communicator)
admin->startServer("node-1");
admin->startServer("node-2");
+ int nRetry = 0;
+ while(!admin->pingNode("node-1") && nRetry < 15)
+ {
+ IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(200));
+ ++nRetry;
+ }
+
+ nRetry = 0;
+ while(!admin->pingNode("node-2") && nRetry < 15)
+ {
+ IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(200));
+ ++nRetry;
+ }
+
cout << "testing on-demand activation... " << flush;
try
{
@@ -539,7 +553,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
{
}
test(!admin->isServerEnabled("server2"));
- int nRetry = 0;
+ nRetry = 0;
while(!admin->isServerEnabled("server2") && nRetry < 15)
{
IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));