Hi Ryan, the fix for that is already in a development branch and will definitely go into 4.2. I created a bug for that a while ago: http://bugzilla.globus.org/globus/show_bug.cgi?id=5833
Martin > Thanks Martin > Is there a bug report for this or is it documented as a "must-have" for > 4.2? > Many thanks > Ryan > > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Sent: Friday, 29 February 2008 10:51 PM > To: Fraser, Ryan (E&M, Kensington) > Cc: [email protected] > Subject: Re: [gt-user] resource lifetime > > Ryan, > > this is a bug, i found that myself a while ago. > Lifetime handling of MultiJobs will be better in 4.2. > If you can avoid MultiJobs i would recommend to do so. > > Martin > > >> Hi >> >> I have a service that creates a multi job. It appears that there is > only >> an option to set the parent job's termination time and NOT the subjobs >> of the multi. Currently I create each subjob (in a JobDescriptionType >> object) and then they are added to a MultiJobDescriptionType which is >> later associated with a CreateManagedJobInputType. The >> CreateManagedJobInputType object then has its termination time set. >> Setting this does not appear to set the termination time of the > subjobs >> - it ONLY sets the first subjob - is there a way to inherit or set the >> termination time for ALL the subjobs? Am I using the wrong class or is >> this a bug? >> >> >> >> Regards >> >> Ryan Fraser (SE) >> >> CSIRO Exploration & Mining , >> ARRC, 26 Dick Perry Ave, >> Kensington, WA 6151 Australia >> Phone +61 8 6436 8760 Fax +61 8 6436 8555 >> >> >> >> >> >> >> >> >> >> private RunResponse submitBatchJob( >> >> RunResponse rr, MultiJobDescriptionType >> jobDescription, >> >> int amountOfJobs) throws Exception >> >> >> >> String gramJobHandle = null; >> >> SwFrameResource swFrameResource = getResource(); >> >> >> >> ......................... >> >> // submit job >> >> >> >> >> >> >> >> try { >> >> >> >> >> >> .......................... >> >> >> >> // prepare for job submission >> >> JobDescriptionType[] jobs = jobDescription.getJob(); >> >> >> >> // set the default lifetime of the resource in > seconds >> >> //int lifetime = >> (SwFrameConfig.defaultGramLifeTimeLength * >> 3600)+(int)(jobs[0].getMaxWallTime()/60); >> >> int lifetime = >> (SwFrameConfig.defaultGramLifeTimeLength * 3600); >> >> logger.debug("Delegation Cert Resource lifetime in >> seconds = " + lifetime); >> >> lifetime = lifetime + >> (int)(jobs[0].getMaxWallTime()/60); >> >> logger.debug("Delegation Cert Resource lifetime in >> seconds with walltime added = " + lifetime); >> >> >> >> >> >> // establish FULL delegation to client >> >> ....................................................... >> >> >> >> >> >> for(int i=0; i<amountOfJobs; i++) >> >> { >> >> > jobs[i].setFactoryEndpoint(factoryEndpointSubs); >> >> >> jobs[i].setJobCredentialEndpoint(credentialEndpoint); >> >> >> jobs[i].setStagingCredentialEndpoint(credentialEndpoint); >> >> >> >> TransferRequestType stageIn = >> jobs[i].getFileStageIn(); >> >> >> stageIn.setTransferCredentialEndpoint(credentialEndpoint); >> >> jobs[i].setFileStageIn(stageIn); >> >> >> >> TransferRequestType stageOut = >> jobs[i].getFileStageOut(); >> >> >> stageOut.setTransferCredentialEndpoint(credentialEndpoint); >> >> jobs[i].setFileStageOut(stageOut); >> >> >> >> DeleteRequestType fileCleanUp = >> jobs[i].getFileCleanUp(); >> >> >> fileCleanUp.setTransferCredentialEndpoint(credentialEndpoint); >> >> jobs[i].setFileCleanUp(fileCleanUp); >> >> } >> >> >> >> jobDescription.setFactoryEndpoint(factoryEndpoint); >> >> jobDescription.setJob(jobs); >> >> >> >> >> jobDescription.setJobCredentialEndpoint(credentialEndpoint); >> >> //set the user cred for ANY staging >> >> >> jobDescription.setStagingCredentialEndpoint(credentialEndpoint); >> >> >> >> //set up calendar to detail termination time for the >> resource we are about to create, this needs to be longer than the > total >> (including staging) job itself, resource for job >> >> //will be destroyed at this time even if the job has >> not completed!!!! >> >> >> >> // set up calendar to detail termination time for > the >> resource >> >> // we are about to create, this needs to be > longer >> than the >> >> // total (including staging) job itself, resource >> for job will >> >> // be destroyed at this time even if the job has >> not completed! >> >> Calendar cal = Calendar.getInstance(); >> >> >> > cal.add(java.util.Calendar.HOUR,100+(int)(jobs[0].getMaxWallTime()/60)); >> >> logger.debug("Resource lifetime is 100hrs + walltime > = >> " + (100+(int)(jobs[0].getMaxWallTime()/60))); >> >> >> >> >> >> >> >> >> >> //set up calendar to detail termination time for the >> resource we are about to create, this needs to be longer than the > total >> (including staging) job itself, resource for job >> >> //will be destroyed at this time even if the job has >> not completed!!!! >> >> >> >> //subscibe to the job >> >> Subscribe subscriptionReq = new Subscribe(); >> >> >> >> //create the job input which includes everything > setup >> previously >> >> CreateManagedJobInputType jobInput = new >> CreateManagedJobInputType(); >> >> jobInput.setJobID(new AttributedURI("uuid:" + >> UUIDGenFactory.getUUIDGen().nextUUID())); >> >> >> >> jobInput.setInitialTerminationTime(cal); >> >> jobInput.setMultiJob(jobDescription); >> >> //subscribe to the job >> >> >> >> //create the job and submit to gram >> >> CreateManagedJobOutputType createResponse >> >> = factoryPort.createManagedJob(jobInput); >> >> >> >> //create an endpoint to reference the job >> >> EndpointReferenceType jobEndpoint = >> createResponse.getManagedJobEndpoint(); >> >> >> >> ManagedJobPortType jobPort = >> ManagedJobClientHelper.getPort(jobEndpoint); >> >> >> >> >> >> >> >> >> >> > > > > >
