diff options
Diffstat (limited to 'utils/submit-grid-jobs')
-rwxr-xr-x | utils/submit-grid-jobs | 27 |
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! |