diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/src/IceGrid/ServerI.cpp | 15 | ||||
-rw-r--r-- | cpp/test/IceGrid/deployer/Makefile | 2 | ||||
-rw-r--r-- | cpp/test/IceGrid/deployer/Service.cpp | 9 | ||||
-rw-r--r-- | cpp/test/IceGrid/deployer/freezeservice.xml | 1 |
4 files changed, 24 insertions, 3 deletions
diff --git a/cpp/src/IceGrid/ServerI.cpp b/cpp/src/IceGrid/ServerI.cpp index b95bffebd7c..0a2ec24a8fa 100644 --- a/cpp/src/IceGrid/ServerI.cpp +++ b/cpp/src/IceGrid/ServerI.cpp @@ -1114,6 +1114,19 @@ ServerI::updateImpl(const string& app, const ServerDescriptorPtr& descriptor, bo updateDbEnv(_serverDir, *q); knownDbEnvs.push_back(q->name); } + if(iceBox) + { + ServiceInstanceDescriptorSeq::const_iterator s; + for(s = iceBox->services.begin(); s != iceBox->services.end(); ++s) + { + CommunicatorDescriptorPtr svc = s->descriptor; + for(DbEnvDescriptorSeq::const_iterator q = svc->dbEnvs.begin(); q != svc->dbEnvs.end(); ++q) + { + updateDbEnv(_serverDir, *q); + knownDbEnvs.push_back(q->name); + } + } + } // // Remove old database environments. @@ -1153,7 +1166,7 @@ ServerI::updateImpl(const string& app, const ServerDescriptorPtr& descriptor, bo ServiceInstanceDescriptorSeq::const_iterator s; for(s = iceBox->services.begin(); s != iceBox->services.end(); ++s) { - ServiceDescriptorPtr svc = ServiceDescriptorPtr::dynamicCast(s->descriptor); + CommunicatorDescriptorPtr svc = s->descriptor; for(AdapterDescriptorSeq::const_iterator t = svc->adapters.begin(); t != svc->adapters.end(); ++t) { if(!t->id.empty()) diff --git a/cpp/test/IceGrid/deployer/Makefile b/cpp/test/IceGrid/deployer/Makefile index 55650256566..9c05e812bb6 100644 --- a/cpp/test/IceGrid/deployer/Makefile +++ b/cpp/test/IceGrid/deployer/Makefile @@ -50,7 +50,7 @@ $(SERVER): $(OBJS) $(SOBJS) $(SVCFILENAME): $(OBJS) $(SERVICE_OBJS) rm -f $@ - $(call mkshlib,$@,$(SVCSONAME),$(OBJS) $(SERVICE_OBJS),$(LINKWITH)) + $(call mkshlib,$@,$(SVCSONAME),$(OBJS) $(SERVICE_OBJS), -lFreeze $(LINKWITH)) clean:: rm -f db/node/db/servers db/node/db/serveradapters db/node/db/log.* diff --git a/cpp/test/IceGrid/deployer/Service.cpp b/cpp/test/IceGrid/deployer/Service.cpp index b96f8881558..6384e687ef1 100644 --- a/cpp/test/IceGrid/deployer/Service.cpp +++ b/cpp/test/IceGrid/deployer/Service.cpp @@ -9,6 +9,7 @@ #include <Ice/Ice.h> #include <IceBox/IceBox.h> +#include <Freeze/Freeze.h> #include <TestI.h> #ifndef TEST_SERVICE_API @@ -61,8 +62,14 @@ ServiceI::start(const string& name, const StringSeq& args) { Ice::PropertiesPtr properties = communicator->getProperties(); - Ice::ObjectAdapterPtr adapter = communicator->createObjectAdapter(name); + if(properties->getPropertyAsInt(name + ".Freeze") > 0) + { + // + // We do this to ensure the dbenv directory exists. + // + Freeze::createConnection(communicator, name); + } Ice::ObjectPtr object = new TestI(adapter, properties); adapter->add(object, Ice::stringToIdentity(properties->getProperty(name + ".Identity"))); adapter->activate(); diff --git a/cpp/test/IceGrid/deployer/freezeservice.xml b/cpp/test/IceGrid/deployer/freezeservice.xml index 443f28a5613..15e299a845a 100644 --- a/cpp/test/IceGrid/deployer/freezeservice.xml +++ b/cpp/test/IceGrid/deployer/freezeservice.xml @@ -11,6 +11,7 @@ <property name="${name}.Identity" value="${server}-${name}"/> <property name="${name}.Type" value="freeze"/> <property name="${name}.ServiceName" value="${name}"/> + <property name="${name}.Freeze" value="1"/> <property name="AppVarOverridedByParamProp" value="${AppVarOverridedByParam}"/> <property name="NodeVarOverridedByParamProp" value="${NodeVarOverridedByParam}"/> |