aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xutils/submit-grid-jobs27
1 files changed, 19 insertions, 8 deletions
diff --git a/utils/submit-grid-jobs b/utils/submit-grid-jobs
index de022e1..8f54c1e 100755
--- a/utils/submit-grid-jobs
+++ b/utils/submit-grid-jobs
@@ -394,7 +394,7 @@ def release_job(submit_file):
return -1
-def get_job_status(submit_file):
+def get_job_status(submit_file, data=None):
"""
Check to see if a given grid job is finished. Returns the following statuses:
@@ -412,16 +412,20 @@ def get_job_status(submit_file):
http://pages.cs.wisc.edu/~adesmet/status.html.
"""
log.debug("condor_q -json")
- output = check_output(["condor_q","-json","--attributes","SubmitFile,JobStatus"])
head, tail = split(submit_file)
- if output:
- data = json.loads(output)
+ if data is None:
+ output = check_output(["condor_q","-json","--attributes","SubmitFile,JobStatus","--constraint",'SubmitFile == "%s"' % tail])
- for entry in data:
- if entry['SubmitFile'] == tail:
- return entry['JobStatus']
+ if output:
+ data = json.loads(output)
+ else:
+ data = []
+
+ for entry in data:
+ if entry['SubmitFile'] == tail:
+ return entry['JobStatus']
# If there's no entry from condor_q the job is done. Now, we check to see
# if it completed successfully. Note: Jobs often don't complete
@@ -482,6 +486,13 @@ def main(conn, dqxx_dir, max_retries, max_jobs):
stats = {}
+ output = check_output(["condor_q","-json","--attributes","SubmitFile,JobStatus"])
+
+ if output:
+ data = json.loads(output)
+ else:
+ data = []
+
for id, filename, run, uuid, gtid, particle_id, max_time, state, nretry, submit_file in results.fetchall():
if state not in stats:
stats[state] = 1
@@ -505,7 +516,7 @@ def main(conn, dqxx_dir, max_retries, max_jobs):
c.execute("UPDATE state SET state = 'RUNNING', submit_file = ?, nretry = ? WHERE id = ?", (abspath(submit_file),0,id))
elif state == 'RUNNING':
# check to see if it's completed
- job_status = get_job_status(submit_file)
+ job_status = get_job_status(submit_file, data=data)
if job_status in (0,1,2,4):
# nothing to do!