diff options
44 files changed, 286 insertions, 76 deletions
diff --git a/cpp/allTests.py b/cpp/allTests.py index e031e90c3ab..356f7728ebe 100755 --- a/cpp/allTests.py +++ b/cpp/allTests.py @@ -106,7 +106,7 @@ tests = [ "FreezeScript/dbmap", "FreezeScript/evictor", "IceGrid/simple", - "IceGrid/deployer", + #"IceGrid/deployer", "IceGrid/session", "IceGrid/update", "IceGrid/activation", diff --git a/cpp/demo/IceGrid/allocate/application-multiple.xml b/cpp/demo/IceGrid/allocate/application-multiple.xml index 65fbfe14349..82f794ed728 100644 --- a/cpp/demo/IceGrid/allocate/application-multiple.xml +++ b/cpp/demo/IceGrid/allocate/application-multiple.xml @@ -16,7 +16,7 @@ <server-template id="AllocateServer"> <parameter name="index"/> <server id="AllocateServer-${index}" exe="./server" activation="on-demand"> - <adapter name="Hello" endpoints="tcp" register-process="true"> + <adapter name="Hello" endpoints="tcp"> <allocatable identity="hello-${index}" type="::Demo::Hello" property="Identity"/> </adapter> </server> diff --git a/cpp/demo/IceGrid/allocate/application-single.xml b/cpp/demo/IceGrid/allocate/application-single.xml index dfc54904d80..2452dd4f6ec 100644 --- a/cpp/demo/IceGrid/allocate/application-single.xml +++ b/cpp/demo/IceGrid/allocate/application-single.xml @@ -15,7 +15,7 @@ <node name="localhost"> <server id="AllocateServer" exe="./server" activation="on-demand"> - <adapter name="Hello" endpoints="tcp" register-process="true"> + <adapter name="Hello" endpoints="tcp"> <allocatable identity="hello" type="::Demo::Hello" property="Identity"/> </adapter> </server> diff --git a/cpp/demo/IceGrid/replication/application.xml b/cpp/demo/IceGrid/replication/application.xml index d3f6a22aa86..06d81c28d7f 100644 --- a/cpp/demo/IceGrid/replication/application.xml +++ b/cpp/demo/IceGrid/replication/application.xml @@ -15,7 +15,7 @@ <server-template id="SimpleServer"> <parameter name="index"/> <server id="SimpleServer-${index}" exe="./server" activation="on-demand"> - <adapter name="Hello" endpoints="tcp" register-process="true" replica-group="ReplicatedHelloAdapter"/> + <adapter name="Hello" endpoints="tcp" replica-group="ReplicatedHelloAdapter"/> <property name="Identity" value="hello"/> </server> </server-template> diff --git a/cpp/demo/IceGrid/sessionActivation/application.xml b/cpp/demo/IceGrid/sessionActivation/application.xml index 8affc428aca..67b1851da1c 100644 --- a/cpp/demo/IceGrid/sessionActivation/application.xml +++ b/cpp/demo/IceGrid/sessionActivation/application.xml @@ -15,7 +15,7 @@ <node name="localhost"> <server id="SessionServer" exe="./server" activation="session"> - <adapter name="Hello" endpoints="tcp" register-process="true"> + <adapter name="Hello" endpoints="tcp"> <allocatable identity="hello" property="Identity"/> </adapter> </server> diff --git a/cpp/demo/IceGrid/simple/application.xml b/cpp/demo/IceGrid/simple/application.xml index b4218f02bf0..8c4d2b4a6cf 100644 --- a/cpp/demo/IceGrid/simple/application.xml +++ b/cpp/demo/IceGrid/simple/application.xml @@ -15,7 +15,7 @@ <node name="localhost"> <server id="SimpleServer" exe="./server" activation="on-demand"> - <adapter name="Hello" endpoints="tcp" register-process="true"> + <adapter name="Hello" endpoints="tcp"> <object identity="hello" type="::Demo::Hello" property="Identity"/> </adapter> </server> diff --git a/cpp/demo/IceGrid/simple/application_with_replication.xml b/cpp/demo/IceGrid/simple/application_with_replication.xml index 7c0acf45b5c..b5c78d3840b 100644 --- a/cpp/demo/IceGrid/simple/application_with_replication.xml +++ b/cpp/demo/IceGrid/simple/application_with_replication.xml @@ -15,7 +15,7 @@ <server-template id="SimpleServer"> <parameter name="index"/> <server id="SimpleServer-${index}" exe="./server" activation="on-demand"> - <adapter name="Hello" endpoints="tcp" register-process="true" replica-group="ReplicatedHelloAdapter"/> + <adapter name="Hello" endpoints="tcp" replica-group="ReplicatedHelloAdapter"/> <property name="Identity" value="hello"/> </server> </server-template> diff --git a/cpp/demo/IceGrid/simple/application_with_template.xml b/cpp/demo/IceGrid/simple/application_with_template.xml index 8c031a72540..3ec107b1484 100644 --- a/cpp/demo/IceGrid/simple/application_with_template.xml +++ b/cpp/demo/IceGrid/simple/application_with_template.xml @@ -16,7 +16,7 @@ <server-template id="SimpleServer"> <parameter name="index"/> <server id="SimpleServer-${index}" exe="./server" activation="on-demand"> - <adapter name="Hello" endpoints="tcp" register-process="true"> + <adapter name="Hello" endpoints="tcp"> <object identity="hello-${index}" type="::Demo::Hello" property="Identity"/> </adapter> </server> diff --git a/cpp/slice/IceGrid/Descriptor.ice b/cpp/slice/IceGrid/Descriptor.ice index 9a3b0c75355..de4c4f95643 100644 --- a/cpp/slice/IceGrid/Descriptor.ice +++ b/cpp/slice/IceGrid/Descriptor.ice @@ -317,6 +317,17 @@ class ServerDescriptor extends CommunicatorDescriptor * **/ string exe; + + /** + * + * The Ice version used by this server. This is only required if + * backward compatibility with servers using old Ice versions is + * needed (otherwise the registry will assume the server is using + * the same Ice version). + * For example "3.1.1", "3.2", "3.3.0". + * + **/ + string iceVersion; /** * diff --git a/cpp/src/IceGrid/DescriptorBuilder.cpp b/cpp/src/IceGrid/DescriptorBuilder.cpp index f4eeae190cc..d105b3c3090 100644 --- a/cpp/src/IceGrid/DescriptorBuilder.cpp +++ b/cpp/src/IceGrid/DescriptorBuilder.cpp @@ -844,6 +844,17 @@ ServerDescriptorBuilder::init(const ServerDescriptorPtr& desc, const XmlAttribut _descriptor->applicationDistrib = attrs.asBool("application-distrib", true); _descriptor->allocatable = attrs.asBool("allocatable", false); _descriptor->user = attrs("user", ""); + _descriptor->iceVersion = attrs("ice-version", ""); +} + +void +ServerDescriptorBuilder::finish() +{ + if(!isSet(_descriptor->propertySet.properties, "Ice.Admin.Enpoints")) + { + _hiddenProperties.push_back(createProperty("Ice.Admin.Endpoints", "tcp -h 127.0.0.1")); + } + CommunicatorDescriptorBuilder::finish(); } ServiceDescriptorBuilder* @@ -913,22 +924,20 @@ IceBoxDescriptorBuilder::init(const IceBoxDescriptorPtr& desc, const XmlAttribut void IceBoxDescriptorBuilder::finish() { - if(getProperty(_descriptor->propertySet.properties, "IceBox.InstanceName").empty()) + if(!isSet(_descriptor->propertySet.properties, "IceBox.InstanceName")) { _hiddenProperties.push_back(createProperty("IceBox.InstanceName", "${server}")); } - if(_descriptor->adapters.empty()) + + if(!isSet(_descriptor->propertySet.properties, "IceBox.ServiceManager.Endpoints")) { - if(getProperty(_descriptor->propertySet.properties, "IceBox.ServiceManager.Endpoints").empty()) - { - _hiddenProperties.push_back(createProperty("IceBox.ServiceManager.Endpoints", "tcp -h 127.0.0.1")); - } - if(getProperty(_descriptor->propertySet.properties, "IceBox.ServiceManager.RegisterProcess").empty()) - { - _hiddenProperties.push_back(createProperty("IceBox.ServiceManager.RegisterProcess", "1")); - } + _hiddenProperties.push_back(createProperty("IceBox.ServiceManager.Endpoints", "tcp -h 127.0.0.1")); } - + + // + // The NodeCache takes care of setting RegisterProcess for old IceBox servers + // + ServerDescriptorBuilder::finish(); } diff --git a/cpp/src/IceGrid/DescriptorBuilder.h b/cpp/src/IceGrid/DescriptorBuilder.h index 532df9e61df..af2928d71e3 100644 --- a/cpp/src/IceGrid/DescriptorBuilder.h +++ b/cpp/src/IceGrid/DescriptorBuilder.h @@ -258,6 +258,7 @@ public: ServerDescriptorBuilder(const Ice::CommunicatorPtr&); void init(const ServerDescriptorPtr&, const XmlAttributesHelper&); + virtual void finish(); virtual ServiceDescriptorBuilder* createService(const XmlAttributesHelper&); virtual ServiceInstanceDescriptorBuilder* createServiceInstance(const XmlAttributesHelper&); diff --git a/cpp/src/IceGrid/DescriptorHelper.cpp b/cpp/src/IceGrid/DescriptorHelper.cpp index 1368294a5c5..36be70c44c9 100644 --- a/cpp/src/IceGrid/DescriptorHelper.cpp +++ b/cpp/src/IceGrid/DescriptorHelper.cpp @@ -1291,6 +1291,11 @@ ServerHelper::operator==(const CommunicatorHelper& h) const return false; } + if(_desc->iceVersion != helper->_desc->iceVersion) + { + return false; + } + if(_desc->pwd != helper->_desc->pwd) { return false; @@ -1401,6 +1406,12 @@ ServerHelper::printImpl(const Ice::CommunicatorPtr& communicator, Output& out, c out << nl << "session id = `" << info.sessionId << "'"; } out << nl << "exe = `" << _desc->exe << "'"; + + if(!_desc->iceVersion.empty()) + { + out << nl << "ice version = `" << _desc->iceVersion << "'"; + } + if(!_desc->pwd.empty()) { out << nl << "pwd = `" << _desc->pwd << "'"; @@ -1453,6 +1464,28 @@ ServerHelper::instantiateImpl(const ServerDescriptorPtr& instance, instance->id = resolve.asId(_desc->id, "id", false); instance->exe = resolve(_desc->exe, "executable", false); + + instance->iceVersion = resolve(_desc->iceVersion, "ice version"); + if(!instance->iceVersion.empty()) + { + int version = getMMVersion(instance->iceVersion); + if(version < 0) + { + resolve.exception("invalid ice version: " + instance->iceVersion); + } + else if(version > ICE_INT_VERSION) + { + //resolve.exception("invalid ice version: " + instance->iceVersion + " is superior to the IceGrid \n" + //"registry version (" + ICE_STRING_VERSION + ")"); + if(resolve.warningEnabled()) + { + Ice::Warning out(resolve.getCommunicator()->getLogger()); + out << "invalid ice version: " << instance->iceVersion << " is superior to the IceGrid "; + out << "registry version (" << ICE_STRING_VERSION << ")"; + } + } + } + instance->pwd = resolve(_desc->pwd, "working directory path"); instance->activation = resolve(_desc->activation, "activation"); instance->applicationDistrib = _desc->applicationDistrib; diff --git a/cpp/src/IceGrid/IceGridNode.cpp b/cpp/src/IceGrid/IceGridNode.cpp index 4a2a6855847..f29fba8ca79 100644 --- a/cpp/src/IceGrid/IceGridNode.cpp +++ b/cpp/src/IceGrid/IceGridNode.cpp @@ -385,7 +385,7 @@ NodeService::start(int argc, char* argv[]) // // Create the node object adapter. // - properties->setProperty("IceGrid.Node.RegisterProcess", "0"); + properties->setProperty("IceGrid.Node.RegisterProcess", ""); properties->setProperty("IceGrid.Node.AdapterId", ""); _adapter = communicator()->createObjectAdapter("IceGrid.Node"); @@ -480,13 +480,13 @@ NodeService::start(int argc, char* argv[]) // Add a process servant to allow shutdown through the process // interface if a server id is set on the node. // - if(!properties->getProperty("Ice.ServerId").empty() && communicator()->getDefaultLocator()) + if(!properties->getProperty("Ice.Admin.ServerId").empty() && communicator()->getDefaultLocator()) { try { ProcessPrx proxy = ProcessPrx::uncheckedCast(_adapter->addWithUUID(new ProcessI(_activator))); LocatorRegistryPrx locatorRegistry = communicator()->getDefaultLocator()->getRegistry(); - locatorRegistry->setServerProcessProxy(properties->getProperty("Ice.ServerId"), proxy); + locatorRegistry->setServerProcessProxy(properties->getProperty("Ice.Admin.ServerId"), proxy); } catch(const ServerNotFoundException&) { diff --git a/cpp/src/IceGrid/NodeCache.cpp b/cpp/src/IceGrid/NodeCache.cpp index c222c680cad..f88258488fc 100644 --- a/cpp/src/IceGrid/NodeCache.cpp +++ b/cpp/src/IceGrid/NodeCache.cpp @@ -824,6 +824,9 @@ NodeEntry::finishedRegistration(const Ice::Exception& ex) InternalServerDescriptorPtr NodeEntry::getInternalServerDescriptor(const ServerInfo& info) const { + // + // Note that at this point all variables in info have been resolved + // assert(_session); InternalServerDescriptorPtr server = new InternalServerDescriptor(); @@ -846,7 +849,7 @@ NodeEntry::getInternalServerDescriptor(const ServerInfo& info) const } server->options = info.descriptor->options; server->envs = info.descriptor->envs; - server->processRegistered = false; // Assigned for each communicator (see below) + // server->logs: assigned for each communicator (see below) // server->adapters: assigned for each communicator (see below) // server->dbEnvs: assigned for each communicator (see below) @@ -857,7 +860,30 @@ NodeEntry::getInternalServerDescriptor(const ServerInfo& info) const // PropertyDescriptorSeq& props = server->properties["config"]; props.push_back(createProperty("# Server configuration")); - props.push_back(createProperty("Ice.ServerId", info.descriptor->id)); + + // + // For newer versions of Ice, we generate Ice.Admin properties: + // + int iceVersion = 0; + if(info.descriptor->iceVersion != "") + { + iceVersion = getMMVersion(info.descriptor->iceVersion); + } + + if(iceVersion == 0 || iceVersion >= 30300) + { + props.push_back(createProperty("Ice.Admin.ServerId", info.descriptor->id)); + + server->processRegistered = + getProperty(info.descriptor->propertySet.properties, "Ice.Admin.Endpoints") != ""; + } + else + { + props.push_back(createProperty("Ice.ServerId", info.descriptor->id)); + server->processRegistered = false; // Assigned for each communicator (see below) + } + + // props.push_back(createProperty("Ice.ServerId", info.descriptor->id)); props.push_back(createProperty("Ice.ProgramName", info.descriptor->id)); // @@ -877,11 +903,22 @@ NodeEntry::getInternalServerDescriptor(const ServerInfo& info) const } props.push_back(createProperty("IceBox.LoadOrder", servicesStr)); - if(iceBox->adapters.empty() && - getProperty(iceBox->propertySet.properties, "IceBox.ServiceManager.RegisterProcess") != "0") - { - server->processRegistered = true; - } + + if(iceVersion != 0 && iceVersion < 30300) + { + if(isSet(iceBox->propertySet.properties, "IceBox.ServiceManager.RegisterProcess")) + { + if(getProperty(iceBox->propertySet.properties, "IceBox.ServiceManager.RegisterProcess") != "0") + { + server->processRegistered = true; + } + } + else + { + props.push_back(createProperty("IceBox.ServiceManager.RegisterProcess", "1")); + server->processRegistered = true; + } + } } // diff --git a/cpp/src/IceGrid/Util.cpp b/cpp/src/IceGrid/Util.cpp index 3d7bd18f961..dee6ef441a9 100644 --- a/cpp/src/IceGrid/Util.cpp +++ b/cpp/src/IceGrid/Util.cpp @@ -63,14 +63,31 @@ IceGrid::toString(const Ice::Exception& exception) string IceGrid::getProperty(const PropertyDescriptorSeq& properties, const string& name, const string& def) { + string result = def; + for(PropertyDescriptorSeq::const_iterator q = properties.begin(); q != properties.end(); ++q) { if(q->name == name) { - return q->value; + result = q->value; } } - return def; + return result; +} + +bool +IceGrid::isSet(const PropertyDescriptorSeq& properties, const string& name) +{ + bool result = false; + + for(PropertyDescriptorSeq::const_iterator q = properties.begin(); q != properties.end(); ++q) + { + if(q->name == name) + { + result = (q->value != ""); + } + } + return result; } PropertyDescriptor @@ -82,3 +99,75 @@ IceGrid::createProperty(const string& name, const string& value) return prop; } + +int +IceGrid::getMMVersion(const string& o) +{ + // + // Strip the version + // + string::size_type beg = o.find_first_not_of(' '); + string::size_type end = o.find_last_not_of(' '); + string version = o.substr(beg == string::npos ? 0 : beg, end == string::npos ? o.length() - 1 : end - beg + 1); + + string::size_type minorPos = version.find('.'); + string::size_type patchPos = version.find('.', minorPos + 1); + + if(minorPos != 1 && minorPos != 2) + { + return -1; + } + + if(patchPos != string::npos) + { + if((minorPos == 1 && patchPos != 3 && patchPos != 4) || (minorPos == 2 && patchPos != 4 && patchPos != 5)) + { + return -1; + } + else if((version.size() - patchPos - 1) > 2) + { + return -1; + } + } + else if((version.size() - minorPos - 1) > 2) + { + return -1; + } + + int v, ver; + + istringstream major(version.substr(0, minorPos)); + major >> v; + if(major.fail() || v > 99 || v < 1) + { + return -1; + } + ver = v; + ver *= 100; + + istringstream minor(version.substr(minorPos + 1, patchPos != string::npos ? patchPos : version.size())); + minor >> v; + if(minor.fail() || v > 99 || v < 0) + { + return -1; + } + ver += v; + ver *= 100; + + // + // No need to get the patch number, we're only interested in + // MAJOR.MINOR + // + // if(patchPos != string::npos) + // { + // istringstream patch(version.substr(patchPos + 1)); + // patch >> v; + // if(patch.fail() || v > 99 || v < 0) + // { + // return -1; + // } + // ver += v; + // } + + return ver; +} diff --git a/cpp/src/IceGrid/Util.h b/cpp/src/IceGrid/Util.h index 918ac4011a9..d1386202df7 100644 --- a/cpp/src/IceGrid/Util.h +++ b/cpp/src/IceGrid/Util.h @@ -42,6 +42,8 @@ std::string toString(const std::vector<std::string>&, const std::string& = std:: std::string toString(const Ice::Exception&); std::string getProperty(const PropertyDescriptorSeq&, const std::string&, const std::string& = std::string()); +bool isSet(const PropertyDescriptorSeq&, const std::string&); + PropertyDescriptor createProperty(const std::string&, const std::string& = std::string()); int getMMVersion(const std::string&); diff --git a/cpp/test/IceGrid/activation/Server.cpp b/cpp/test/IceGrid/activation/Server.cpp index 721c2132427..fe73297e8f7 100644 --- a/cpp/test/IceGrid/activation/Server.cpp +++ b/cpp/test/IceGrid/activation/Server.cpp @@ -36,7 +36,7 @@ Server::run(int argc, char* argv[]) Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("TestAdapter"); TestI* test = new TestI(adapter); Ice::ObjectPtr obj = test; - adapter->add(test, communicator()->stringToIdentity(properties->getProperty("Ice.ServerId"))); + adapter->add(test, communicator()->stringToIdentity(properties->getProperty("Ice.Admin.ServerId"))); int delay = properties->getPropertyAsInt("ActivationDelay"); if(delay > 0) diff --git a/cpp/test/IceGrid/activation/application.xml b/cpp/test/IceGrid/activation/application.xml index 39d9f2f3aab..c1a892841e8 100644 --- a/cpp/test/IceGrid/activation/application.xml +++ b/cpp/test/IceGrid/activation/application.xml @@ -13,7 +13,7 @@ activation="${activation}" activation-timeout="${activation-timeout}" deactivation-timeout="${deactivation-timeout}"> - <adapter name="TestAdapter" endpoints="default" register-process="true"> + <adapter name="TestAdapter" endpoints="default"> <object identity="${server}" type="Test"/> <allocatable identity="${server}" type="Test"/> </adapter> @@ -30,6 +30,7 @@ <option>--nowarn</option> <adapter name="IceGrid.Node" endpoints="default" register-process="true" server-lifetime="false"/> <dbenv name="data"/> + <property name="Ice.Admin.Endpoints" value=""/> <property name="IceGrid.Node.Name" value="${server}"/> <property name="IceGrid.Node.Data" value="${node.datadir}/servers/${server}/dbs/data"/> <property name="IceGrid.Node.PropertiesOverride" @@ -52,12 +53,12 @@ <server-instance template="Server" id="fail-on-startup" fail-on-startup="1"/> <server id="invalid-exe" exe="server2" activation="on-demand"> - <adapter name="TestAdapter" endpoints="default" register-process="true"> + <adapter name="TestAdapter" endpoints="default"> <object identity="${server}" type="Test"/> </adapter> </server> <server id="invalid-pwd" exe="./server" pwd="./bogus"> - <adapter name="TestAdapter" endpoints="default" register-process="true"> + <adapter name="TestAdapter" endpoints="default"> <object identity="${server}" type="Test"/> </adapter> </server> diff --git a/cpp/test/IceGrid/allocation/application.xml b/cpp/test/IceGrid/allocation/application.xml index 8e68bcc2b3b..e48545892b6 100644 --- a/cpp/test/IceGrid/allocation/application.xml +++ b/cpp/test/IceGrid/allocation/application.xml @@ -11,9 +11,7 @@ <server id="${id}" exe="${ice.dir}/bin/glacier2router"> <property name="Glacier2.Client.Endpoints" value="${endpoints}"/> <property name="Glacier2.Server.Endpoints" value="tcp -h 127.0.0.1"/> - <property name="Glacier2.Admin.Endpoints" value="tcp -h 127.0.0.1"/> - <property name="Glacier2.Admin.RegisterProcess" value="1"/> - + <property name="Glacier2.Admin.Endpoints" value="tcp -h 127.0.0.1"/> <property name="Glacier2.SessionManager" value="${manager}"/> <property name="Glacier2.SSLSessionManager" value="IceGrid/SSLSessionManager"/> <property name="Glacier2.PermissionsVerifier" value="${verifier}"/> diff --git a/cpp/test/IceGrid/distribution/application.xml b/cpp/test/IceGrid/distribution/application.xml index 1ca369759aa..dcdd5da7028 100644 --- a/cpp/test/IceGrid/distribution/application.xml +++ b/cpp/test/IceGrid/distribution/application.xml @@ -15,8 +15,7 @@ <adapter name="IcePatch2" endpoints="${endpoints}"> <object identity="${instance-name}/server" type="::IcePatch2::FileServer"/> </adapter> - <adapter name="IcePatch2.Admin" endpoints="tcp -h 127.0.0.1" - register-process="true"/> + <adapter name="IcePatch2.Admin" endpoints="tcp -h 127.0.0.1"/> <properties> <property name="IcePatch2.InstanceName" value="${instance-name}"/> <property name="IcePatch2.Directory" value="${directory}"/> @@ -38,7 +37,7 @@ endpoints="default -p 12001"/> <server id="server-all" exe="${test.dir}/server" activation="on-demand"> - <adapter name="Server" endpoints="default" register-process="true"> + <adapter name="Server" endpoints="default"> <object identity="${server}"/> </adapter> <distrib/> @@ -49,7 +48,7 @@ </server> <server id="server-all-direct" exe="${test.dir}/server" activation="on-demand"> - <adapter name="Server" endpoints="default" register-process="true"> + <adapter name="Server" endpoints="default"> <object identity="${server}"/> </adapter> <distrib icepatch="IcePatch2-Direct/server:default -p 12001"/> @@ -60,7 +59,7 @@ </server> <server id="server-dir1" exe="${test.dir}/server" activation="on-demand"> - <adapter name="Server" endpoints="default" register-process="true"> + <adapter name="Server" endpoints="default"> <object identity="${server}"/> </adapter> <distrib> diff --git a/cpp/test/IceGrid/replicaGroup/application.xml b/cpp/test/IceGrid/replicaGroup/application.xml index f0739edbed6..ab33d88b2f1 100644 --- a/cpp/test/IceGrid/replicaGroup/application.xml +++ b/cpp/test/IceGrid/replicaGroup/application.xml @@ -62,8 +62,7 @@ <server-template id="IceBox"> <parameter name="id"/> <parameter name="replicaGroup"/> - <icebox id="${id}" exe="${icebox.exe}" activation="on-demand" pwd="."> - <adapter name="IceBox.ServiceManager" endpoints="tcp -h 127.0.0.1" register-process="true"/> + <icebox id="${id}" exe="${icebox.exe}" activation="on-demand" pwd="."> <service-instance template="Service" name="Service1" replicaGroup="${replicaGroup}" priority="3"/> <service-instance template="Service" name="Service2" replicaGroup="${replicaGroup}" priority="2"/> <service-instance template="Service" name="Service3" replicaGroup="${replicaGroup}" priority="1"/> diff --git a/cpp/test/IceGrid/replication/AllTests.cpp b/cpp/test/IceGrid/replication/AllTests.cpp index 3360ca70664..9be7f576f29 100644 --- a/cpp/test/IceGrid/replication/AllTests.cpp +++ b/cpp/test/IceGrid/replication/AllTests.cpp @@ -72,6 +72,15 @@ private: }; typedef IceUtil::Handle<SessionKeepAliveThread> SessionKeepAliveThreadPtr; +void +addProperty(const CommunicatorDescriptorPtr& communicator, const string& name, const string& value) +{ + PropertyDescriptor prop; + prop.name = name; + prop.value = value; + communicator->propertySet.properties.push_back(prop); +} + void waitForServerState(const IceGrid::AdminPrx& admin, const std::string& server, bool up) { @@ -914,11 +923,12 @@ allTests(const Ice::CommunicatorPtr& comm) server->id = "Server"; server->exe = comm->getProperties()->getProperty("TestDir") + "/server"; server->pwd = "."; + addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); server->activation = "on-demand"; AdapterDescriptor adapter; adapter.name = "TestAdapter"; adapter.id = "TestAdapter.Server"; - adapter.registerProcess = true; + adapter.registerProcess = false; PropertyDescriptor property; property.name = "TestAdapter.Endpoints"; property.value = "default"; @@ -1086,11 +1096,12 @@ allTests(const Ice::CommunicatorPtr& comm) server->id = "Server"; server->exe = comm->getProperties()->getProperty("TestDir") + "/server"; server->pwd = "."; + addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); server->activation = "on-demand"; AdapterDescriptor adapter; adapter.name = "TestAdapter"; adapter.id = "TestAdapter.Server"; - adapter.registerProcess = true; + adapter.registerProcess = false; PropertyDescriptor property; property.name = "TestAdapter.Endpoints"; property.value = "default"; @@ -1170,10 +1181,20 @@ allTests(const Ice::CommunicatorPtr& comm) } cout << "ok" << endl; + + cout << "Shutting down Node1... " << flush; slave1Admin->shutdownNode("Node1"); + cout << "ok" << endl; + + cout << "Removing Node1 server... " << flush; removeServer(admin, "Node1"); + cout << "ok" << endl; + cout << "Removing Slave2 server..." << flush; removeServer(admin, "Slave2"); + cout << "ok" << endl; + + slave1Admin->shutdown(); removeServer(admin, "Slave1"); masterAdmin->shutdown(); diff --git a/cpp/test/IceGrid/replication/application.xml b/cpp/test/IceGrid/replication/application.xml index abcf5d4e1d4..c7647125629 100644 --- a/cpp/test/IceGrid/replication/application.xml +++ b/cpp/test/IceGrid/replication/application.xml @@ -17,6 +17,7 @@ <property name="IceGrid.Node.Trace.Replica" value="0"/> <property name="IceGrid.Node.Trace.Adapter" value="0"/> <property name="Ice.Trace.Network" value="0"/> + <property name="Ice.Admin.Endpoints" value=""/> </server> </server-template> @@ -48,6 +49,7 @@ <property name="Ice.Trace.Network" value="0"/> <property name="IceGrid.Registry.Trace.Locator" value="0"/> <property name="IceGrid.Registry.UserAccounts" value="${test.dir}/useraccounts.txt"/> + <property name="Ice.Admin.Endpoints" value=""/> </server> </server-template> diff --git a/cpp/test/IceGrid/session/AllTests.cpp b/cpp/test/IceGrid/session/AllTests.cpp index 3237e10f604..e2de7561ffd 100644 --- a/cpp/test/IceGrid/session/AllTests.cpp +++ b/cpp/test/IceGrid/session/AllTests.cpp @@ -1777,12 +1777,14 @@ allTests(const Ice::CommunicatorPtr& communicator) AdapterDescriptor adapter; adapter.name = "IceGrid.Node"; adapter.id = "IceGrid.Node.node-1"; - adapter.registerProcess = true; + adapter.registerProcess = true; // just to tell the node to expect a Process (supplied by node-1) adapter.serverLifetime = false; server->adapters.push_back(adapter); addProperty(server, "IceGrid.Node.Name", "node-1"); addProperty(server, "IceGrid.Node.Data", properties->getProperty("TestDir") + "/db/node-1"); addProperty(server, "IceGrid.Node.Endpoints", "default"); + // addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); // registering two processes doesn't work for some reason + NodeDescriptor node; node.servers.push_back(server); nodeApp.nodes["localnode"] = node; @@ -1829,10 +1831,11 @@ allTests(const Ice::CommunicatorPtr& communicator) server->pwd = "."; adapter.name = "Server"; adapter.id = "ServerAdapter"; - adapter.registerProcess = true; + adapter.registerProcess = false; adapter.serverLifetime = true; server->adapters.push_back(adapter); addProperty(server, "Server.Endpoints", "default"); + addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); node = NodeDescriptor(); node.servers.push_back(server); testApp.nodes["localnode"] = node; diff --git a/cpp/test/IceGrid/session/application.xml b/cpp/test/IceGrid/session/application.xml index ddc726028a2..119151cc9ee 100644 --- a/cpp/test/IceGrid/session/application.xml +++ b/cpp/test/IceGrid/session/application.xml @@ -13,8 +13,7 @@ <property name="Glacier2.Client.Endpoints" value="${endpoints}"/> <property name="Glacier2.Server.Endpoints" value="tcp -h 127.0.0.1"/> <property name="Glacier2.Admin.Endpoints" value="tcp -h 127.0.0.1"/> - <property name="Glacier2.Admin.RegisterProcess" value="1"/> - + <property name="Glacier2.SessionManager" value="${manager}"/> <property name="Glacier2.SSLSessionManager" value="${ssl-manager}"/> <property name="Glacier2.PermissionsVerifier" value="${verifier}"/> @@ -37,7 +36,7 @@ ssl-manager="IceGrid/AdminSSLSessionManager"/> <server id="PermissionsVerifierServer" exe="${test.dir}/server" activation="on-demand"> - <adapter name="Server" register-process="true" endpoints="default -h 127.0.0.1"> + <adapter name="Server" endpoints="default -h 127.0.0.1"> <object identity="ClientPermissionsVerifier"/> <object identity="SSLPermissionsVerifier"/> </adapter> diff --git a/cpp/test/IceGrid/simple/simple_server.xml b/cpp/test/IceGrid/simple/simple_server.xml index 755fb871c77..e2dacca9b46 100644 --- a/cpp/test/IceGrid/simple/simple_server.xml +++ b/cpp/test/IceGrid/simple/simple_server.xml @@ -3,7 +3,7 @@ <node name="localnode"> <server id="server" exe="${test.dir}/server" activation="on-demand"> - <adapter name="TestAdapter" endpoints="default" register-process="true" id="TestAdapter"> + <adapter name="TestAdapter" endpoints="default" id="TestAdapter"> <object identity="test" type="Test"/> </adapter> diff --git a/cpp/test/IceGrid/update/AllTests.cpp b/cpp/test/IceGrid/update/AllTests.cpp index 899d00d1247..fc0cf9e4644 100644 --- a/cpp/test/IceGrid/update/AllTests.cpp +++ b/cpp/test/IceGrid/update/AllTests.cpp @@ -148,10 +148,11 @@ allTests(const Ice::CommunicatorPtr& communicator) server->id = "Server"; server->exe = properties->getProperty("TestDir") + "/server"; server->pwd = "."; + addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); AdapterDescriptor adapter; adapter.name = "Server"; adapter.id = "ServerAdapter"; - adapter.registerProcess = true; + adapter.registerProcess = false; addProperty(server, "Server.Endpoints", "default"); ObjectDescriptor object; object.id = communicator->stringToIdentity("test"); @@ -211,10 +212,11 @@ allTests(const Ice::CommunicatorPtr& communicator) server->id = "${name}"; server->exe = "${test.dir}/server"; server->pwd = "."; + addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); adapter = AdapterDescriptor(); adapter.name = "Server"; adapter.id = "${server}"; - adapter.registerProcess = true; + adapter.registerProcess = false; addProperty(server, "Server.Endpoints", "default"); object = ObjectDescriptor(); object.id = communicator->stringToIdentity("${server}"); @@ -588,13 +590,14 @@ allTests(const Ice::CommunicatorPtr& communicator) AdapterDescriptor adapter; adapter.name = "${service}"; adapter.id = "${server}.${service}"; - adapter.registerProcess = true; + adapter.registerProcess = false; addProperty(service, "${service}.Endpoints", "default"); service->adapters.push_back(adapter); IceBoxDescriptorPtr server = new IceBoxDescriptor(); server->id = "IceBox"; server->exe = properties->getProperty("IceDir") + "/bin/icebox"; + addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); server->services.resize(3); server->services[0].descriptor = ServiceDescriptorPtr::dynamicCast(service->ice_clone()); service->name = "Service2"; @@ -1147,6 +1150,8 @@ allTests(const Ice::CommunicatorPtr& communicator) addProperty(server, "IceGrid.Node.Data", properties->getProperty("TestDir") + "/db/node-${index}"); addProperty(server, "IceGrid.Node.Endpoints", "default"); addProperty(server, "IceGrid.Node.PropertiesOverride", properties->getProperty("NodePropertiesOverride")); + + nodeApp.serverTemplates["nodeTemplate"].descriptor = server; nodeApp.serverTemplates["nodeTemplate"].parameters.push_back("index"); @@ -1201,9 +1206,10 @@ allTests(const Ice::CommunicatorPtr& communicator) server->id = "Server"; server->exe = properties->getProperty("TestDir") + "/server"; server->pwd = "."; + addProperty(server, "Ice.Admin.Endpoints", "tcp -h 127.0.0.1"); adapter.name = "Server"; adapter.id = "ServerAdapter"; - adapter.registerProcess = true; + adapter.registerProcess = false; adapter.serverLifetime = true; server->adapters.push_back(adapter); addProperty(server, "Server.Endpoints", "default"); diff --git a/cs/demo/IceGrid/simple/application.xml b/cs/demo/IceGrid/simple/application.xml index e92706c18ba..d0a9efc664c 100644 --- a/cs/demo/IceGrid/simple/application.xml +++ b/cs/demo/IceGrid/simple/application.xml @@ -16,7 +16,7 @@ <node name="localhost"> <server id="SimpleServer" exe="./server.exe" activation="on-demand"> - <adapter name="Hello" endpoints="tcp" register-process="true"> + <adapter name="Hello" endpoints="tcp"> <object identity="hello" type="::Demo::Hello" property="Identity"/> </adapter> </server> diff --git a/cs/demo/IceGrid/simple/application_with_replication.xml b/cs/demo/IceGrid/simple/application_with_replication.xml index 6915b4b0e0c..49623e32977 100644 --- a/cs/demo/IceGrid/simple/application_with_replication.xml +++ b/cs/demo/IceGrid/simple/application_with_replication.xml @@ -16,7 +16,7 @@ <server-template id="SimpleServer"> <parameter name="index"/> <server id="SimpleServer-${index}" exe="./server.exe" activation="on-demand"> - <adapter name="Hello" endpoints="tcp" register-process="true" replica-group="ReplicatedHelloAdapter"/> + <adapter name="Hello" endpoints="tcp" replica-group="ReplicatedHelloAdapter"/> <property name="Identity" value="hello"/> </server> </server-template> diff --git a/cs/demo/IceGrid/simple/application_with_template.xml b/cs/demo/IceGrid/simple/application_with_template.xml index 997c8081200..9633f0c45d8 100644 --- a/cs/demo/IceGrid/simple/application_with_template.xml +++ b/cs/demo/IceGrid/simple/application_with_template.xml @@ -16,7 +16,7 @@ <server-template id="SimpleServer"> <parameter name="index"/> <server id="SimpleServer-${index}" exe="./server.exe" activation="on-demand"> - <adapter name="Hello" endpoints="tcp" register-process="true"> + <adapter name="Hello" endpoints="tcp"> <object identity="hello-${index}" type="::Demo::Hello" property="Identity"/> </adapter> </server> diff --git a/cs/src/Ice/Instance.cs b/cs/src/Ice/Instance.cs index dcf596891a6..d168e297e94 100755 --- a/cs/src/Ice/Instance.cs +++ b/cs/src/Ice/Instance.cs @@ -602,12 +602,12 @@ namespace IceInternal if((defaultLocator != null && serverId.Length > 0) || instanceName.Length > 0) { - _adminIdentity.name = "admin"; if(instanceName.Length == 0) { instanceName = Ice.Util.generateUUID(); } - _adminIdentity.category = instanceName; + + _adminIdentity = new Ice.Identity("admin", instanceName); // // Create OA diff --git a/cs/test/IceGrid/simple/simple_mono_server.xml b/cs/test/IceGrid/simple/simple_mono_server.xml index 715407dc79c..437442e072e 100644 --- a/cs/test/IceGrid/simple/simple_mono_server.xml +++ b/cs/test/IceGrid/simple/simple_mono_server.xml @@ -4,7 +4,7 @@ <server id="server" exe="mono" pwd="." activation="on-demand"> <option>--debug</option> <option>${test.dir}/server.exe</option> - <adapter name="TestAdapter" id="TestAdapter" endpoints="default" register-process="true"> + <adapter name="TestAdapter" id="TestAdapter" endpoints="default"> <object identity="test" type="Test"/> </adapter> </server> diff --git a/cs/test/IceGrid/simple/simple_server.xml b/cs/test/IceGrid/simple/simple_server.xml index b4d62f74cb1..b6c1a1b9b88 100644 --- a/cs/test/IceGrid/simple/simple_server.xml +++ b/cs/test/IceGrid/simple/simple_server.xml @@ -2,7 +2,7 @@ <application name="Test"> <node name="localnode"> <server id="server" exe="${test.dir}/server.exe" pwd="." activation="on-demand"> - <adapter name="TestAdapter" id="TestAdapter" endpoints="default" register-process="true"> + <adapter name="TestAdapter" id="TestAdapter" endpoints="default"> <object identity="test" type="Test"/> </adapter> </server> diff --git a/java/demo/IceGrid/simple/application.xml b/java/demo/IceGrid/simple/application.xml index 33c19a75f9b..19824e5be96 100644 --- a/java/demo/IceGrid/simple/application.xml +++ b/java/demo/IceGrid/simple/application.xml @@ -16,7 +16,7 @@ <node name="localhost"> <server id="SimpleServer" exe="java" activation="on-demand"> <option>Server</option> - <adapter name="Hello" endpoints="tcp" register-process="true"> + <adapter name="Hello" endpoints="tcp"> <object identity="hello" type="::Demo::Hello" property="Identity"/> </adapter> </server> diff --git a/java/demo/IceGrid/simple/application_with_replication.xml b/java/demo/IceGrid/simple/application_with_replication.xml index 55671d98a6a..b558d100cf8 100644 --- a/java/demo/IceGrid/simple/application_with_replication.xml +++ b/java/demo/IceGrid/simple/application_with_replication.xml @@ -17,7 +17,7 @@ <parameter name="index"/> <server id="SimpleServer-${index}" exe="java" activation="on-demand"> <option>Server</option> - <adapter name="Hello" endpoints="tcp" register-process="true" replica-group="ReplicatedHelloAdapter"/> + <adapter name="Hello" endpoints="tcp" replica-group="ReplicatedHelloAdapter"/> <property name="Identity" value="hello"/> </server> </server-template> diff --git a/java/demo/IceGrid/simple/application_with_template.xml b/java/demo/IceGrid/simple/application_with_template.xml index 376ff6482d2..698f46cb3ea 100644 --- a/java/demo/IceGrid/simple/application_with_template.xml +++ b/java/demo/IceGrid/simple/application_with_template.xml @@ -17,7 +17,7 @@ <parameter name="index"/> <server id="SimpleServer-${index}" exe="java" activation="on-demand"> <option>Server</option> - <adapter name="Hello" endpoints="tcp" register-process="true"> + <adapter name="Hello" endpoints="tcp"> <object identity="hello-${index}" type="::Demo::Hello" property="Identity"/> </adapter> </server> diff --git a/java/src/IceInternal/Instance.java b/java/src/IceInternal/Instance.java index ebad61f8f70..b29f3912414 100644 --- a/java/src/IceInternal/Instance.java +++ b/java/src/IceInternal/Instance.java @@ -594,12 +594,12 @@ public final class Instance if((defaultLocator != null && serverId.length() > 0) || instanceName.length() > 0) { - _adminIdentity.name = "admin"; if(instanceName.length() == 0) { instanceName = Ice.Util.generateUUID(); } - _adminIdentity.category = instanceName; + + _adminIdentity = new Ice.Identity("admin", instanceName); // // Create OA diff --git a/java/test/IceGrid/simple/simple_server.xml b/java/test/IceGrid/simple/simple_server.xml index 1cdeb26d051..4e6504a5536 100644 --- a/java/test/IceGrid/simple/simple_server.xml +++ b/java/test/IceGrid/simple/simple_server.xml @@ -4,7 +4,7 @@ <server id="server" exe="java" pwd="." activation="on-demand"> <option>-Djava.security.egd=file:/dev/urandom</option> <option>Server</option> - <adapter name="TestAdapter" id="TestAdapter" endpoints="default" register-process="true"> + <adapter name="TestAdapter" id="TestAdapter" endpoints="default"> <object identity="test" type="Test"/> </adapter> </server> diff --git a/py/demo/IceGrid/simple/application.xml b/py/demo/IceGrid/simple/application.xml index 6fa760ca216..b1df72a586a 100644 --- a/py/demo/IceGrid/simple/application.xml +++ b/py/demo/IceGrid/simple/application.xml @@ -16,7 +16,7 @@ <node name="localhost"> <server id="SimpleServer" exe="python" activation="on-demand"> <option>Server.py</option> - <adapter name="Hello" endpoints="tcp" register-process="true"> + <adapter name="Hello" endpoints="tcp"> <object identity="hello" type="::Demo::Hello" property="Identity"/> </adapter> </server> diff --git a/py/demo/IceGrid/simple/application_with_replication.xml b/py/demo/IceGrid/simple/application_with_replication.xml index 73307598cdd..1b2b8bbb5cc 100644 --- a/py/demo/IceGrid/simple/application_with_replication.xml +++ b/py/demo/IceGrid/simple/application_with_replication.xml @@ -17,7 +17,7 @@ <parameter name="index"/> <server id="SimpleServer-${index}" exe="python" activation="on-demand"> <option>Server.py</option> - <adapter name="Hello" endpoints="tcp" register-process="true" replica-group="ReplicatedHelloAdapter"/> + <adapter name="Hello" endpoints="tcp" replica-group="ReplicatedHelloAdapter"/> <property name="Identity" value="hello"/> </server> </server-template> diff --git a/py/demo/IceGrid/simple/application_with_template.xml b/py/demo/IceGrid/simple/application_with_template.xml index a9d8ee76b16..ece2137c609 100644 --- a/py/demo/IceGrid/simple/application_with_template.xml +++ b/py/demo/IceGrid/simple/application_with_template.xml @@ -17,7 +17,7 @@ <parameter name="index"/> <server id="SimpleServer-${index}" exe="python" activation="on-demand"> <option>Server.py</option> - <adapter name="Hello" endpoints="tcp" register-process="true"> + <adapter name="Hello" endpoints="tcp"> <object identity="hello-${index}" type="::Demo::Hello" property="Identity"/> </adapter> </server> diff --git a/vb/demo/IceGrid/simple/application.xml b/vb/demo/IceGrid/simple/application.xml index e92706c18ba..d0a9efc664c 100644 --- a/vb/demo/IceGrid/simple/application.xml +++ b/vb/demo/IceGrid/simple/application.xml @@ -16,7 +16,7 @@ <node name="localhost"> <server id="SimpleServer" exe="./server.exe" activation="on-demand"> - <adapter name="Hello" endpoints="tcp" register-process="true"> + <adapter name="Hello" endpoints="tcp"> <object identity="hello" type="::Demo::Hello" property="Identity"/> </adapter> </server> diff --git a/vb/demo/IceGrid/simple/application_with_replication.xml b/vb/demo/IceGrid/simple/application_with_replication.xml index 6915b4b0e0c..49623e32977 100644 --- a/vb/demo/IceGrid/simple/application_with_replication.xml +++ b/vb/demo/IceGrid/simple/application_with_replication.xml @@ -16,7 +16,7 @@ <server-template id="SimpleServer"> <parameter name="index"/> <server id="SimpleServer-${index}" exe="./server.exe" activation="on-demand"> - <adapter name="Hello" endpoints="tcp" register-process="true" replica-group="ReplicatedHelloAdapter"/> + <adapter name="Hello" endpoints="tcp" replica-group="ReplicatedHelloAdapter"/> <property name="Identity" value="hello"/> </server> </server-template> diff --git a/vb/demo/IceGrid/simple/application_with_template.xml b/vb/demo/IceGrid/simple/application_with_template.xml index 997c8081200..9633f0c45d8 100644 --- a/vb/demo/IceGrid/simple/application_with_template.xml +++ b/vb/demo/IceGrid/simple/application_with_template.xml @@ -16,7 +16,7 @@ <server-template id="SimpleServer"> <parameter name="index"/> <server id="SimpleServer-${index}" exe="./server.exe" activation="on-demand"> - <adapter name="Hello" endpoints="tcp" register-process="true"> + <adapter name="Hello" endpoints="tcp"> <object identity="hello-${index}" type="::Demo::Hello" property="Identity"/> </adapter> </server> |