diff --git a/gridtk/models.py b/gridtk/models.py index 67a3017ec86fdade386fc6a7e494e5e9494ac895..1b1d104f2bdbcf9b72d725812c2f9e1a3982f904 100644 --- a/gridtk/models.py +++ b/gridtk/models.py @@ -292,9 +292,9 @@ class Job(Base): deps = str(sorted(list(set([dep.unique for dep in self.get_jobs_we_wait_for()])))) if dependencies < len(deps): deps = deps[:dependencies-3] + '...' - return format.format(self.unique, job_id, queue, status, self.name, deps, command_line) + return format.format(self.unique, job_id, queue[:12], status, self.name, deps, command_line) else: - return format.format(self.unique, job_id, queue, status, self.name, command_line) + return format.format(self.unique, job_id, queue[:12], status, self.name, command_line) diff --git a/gridtk/script/jman.py b/gridtk/script/jman.py index dc5b1723b6bd8f5309b9b8706672856fd9d03fd5..c483646af26280ba9c28bb1b8b9eae0e6bf32feb 100644 --- a/gridtk/script/jman.py +++ b/gridtk/script/jman.py @@ -90,6 +90,14 @@ def get_ids(jobs): return indexes +def get_memfree(memory, parallel): + """Computes the memory required for the memfree field.""" + number = int(memory.rstrip(string.ascii_letters)) + memtype = memory.lstrip(string.digits) + if not memtype: + memtype = "G" + return "%d%s" % (number*parallel, memtype) + def submit(args): """Submission command""" @@ -115,7 +123,7 @@ def submit(args): if args.qname != 'all.q': kwargs['hvmem'] = args.memory if args.parallel is not None: kwargs['pe_opt'] = "pe_mth %d" % args.parallel - kwargs['memfree'] = "%d%s" % (int(args.memory.rstrip(string.ascii_letters)) * args.parallel, args.memory.lstrip(string.digits)) + kwargs['memfree'] = get_memfree(args.memory, args.parallel) kwargs['dry_run'] = args.dry_run kwargs['stop_on_failure'] = args.stop_on_failure @@ -140,7 +148,7 @@ def resubmit(args): kwargs['hvmem'] = args.memory if args.parallel is not None: kwargs['pe_opt'] = "pe_mth %d" % args.parallel - kwargs['memfree'] = "%d%s" % (int(args.memory.rstrip(string.ascii_letters)) * args.parallel, args.memory.lstrip(string.digits)) + kwargs['memfree'] = get_memfree(args.memory, args.parallel) if args.io_big: kwargs['io_big'] = True if args.no_io_big: diff --git a/gridtk/sge.py b/gridtk/sge.py index 426973e0b3b466dc7ef9a377322d402809146d65..59bb8c25ec0f28080cdb8477de86af2245ef89e3 100644 --- a/gridtk/sge.py +++ b/gridtk/sge.py @@ -154,7 +154,8 @@ class JobManagerSGE(JobManager): logger.debug("Re-submitting job '%s' with dependencies '%s' to the grid." % (job, deps)) self._submit_to_grid(job, job.name, job.get_array(), deps, job.log_dir, **arguments) - self.session.commit() + # commit after each job to avoid failures of not finding the job during execution in the grid + self.session.commit() self.unlock() diff --git a/setup.py b/setup.py index 63993942bc2456e62ea905bba04a76459fb89e56..78b4ac7503d666238642072ff1aa776d4a025861 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ if sys.version_info[:2] < (2, 7) or ((3,0) <= sys.version_info[:2] < (3,2)): setup( name='gridtk', - version='1.1.3a0', + version='1.1.4a0', description='SGE Grid and Local Submission and Monitoring Tools for Idiap', url='http://github.com/idiap/gridtk',