2 from __future__
import print_function
3 from builtins
import range
7 import Alignment.MillePedeAlignmentAlgorithm.mpslib.Mpslibclass
as mpslib
11 """Fill timing info in the database for `mps_index`.
14 - `mps_index`: index in the MPS database
15 - `status`: job status
16 - `cpu_time`: extracted CPU timing information
19 cpu_time = int(round(cpu_time))
20 if status
in (
"RUN",
"DONE"):
22 diff = cpu_time - lib.JOBRUNTIME[mps_index]
23 lib.JOBRUNTIME[mps_index] = cpu_time
24 lib.JOBHOST[mps_index] =
"+"+
str(diff)
25 lib.JOBINCR[mps_index] = diff
27 lib.JOBRUNTIME[mps_index] = 0
28 lib.JOBINCR[mps_index] = 0
34 htcondor_jobstatus = {
"1":
"PEND",
45 lib = mpslib.jobdatabase()
49 for i
in range(len(lib.JOBID)):
51 for status
in (
"SETUP",
"OK",
"DONE",
"FETCH",
"ABEND",
"WARN",
"FAIL"):
52 if status
in lib.JOBSTATUS[i]:
56 submitted_jobs[lib.JOBID[i]] = i
57 print(
"submitted jobs:", len(submitted_jobs))
62 if len(submitted_jobs) > 0:
64 condor_q = subprocess.check_output([
"condor_q",
"-af:j",
65 "JobStatus",
"RemoteSysCpu"],
66 stderr = subprocess.STDOUT).
decode()
67 for line
in condor_q.splitlines():
68 job_id, status, cpu_time = line.split()
69 job_status[job_id] = {
"status": htcondor_jobstatus[status],
70 "cpu": float(cpu_time)}
72 for job_id, job_info
in job_status.items():
73 mps_index = submitted_jobs.get(job_id, -1)
75 disabled =
"DISABLED" if "DISABLED" in lib.JOBSTATUS[mps_index]
else ""
79 print(
"mps_update.py - the job", job_id, end=
' ')
80 print(
"was not found in the JOBID array")
83 submitted_jobs.pop(job_id)
87 lib.JOBSTATUS[mps_index] = disabled+job_info[
"status"]
93 submitted_jobs_copy = { k:v
for k,v
in submitted_jobs.items() }
94 for job_id, mps_index
in submitted_jobs_copy.items():
96 disabled =
"DISABLED" if "DISABLED" in lib.JOBSTATUS[mps_index]
else ""
97 print(
" DB job ", job_id, mps_index)
100 userlog = os.path.join(
"jobData", lib.JOBDIR[mps_index],
"HTCJOB")
101 condor_h = subprocess.check_output([
"condor_history", job_id,
"-limit",
"1",
103 "-af:j",
"JobStatus",
"RemoteSysCpu"],
104 stderr = subprocess.STDOUT).
decode()
105 if len(condor_h.strip()) > 0:
106 job_id, status, cpu_time = condor_h.split()
107 status = htcondor_jobstatus[status]
108 lib.JOBSTATUS[mps_index] = disabled + status
110 submitted_jobs.pop(job_id)
113 if "RUN" in lib.JOBSTATUS[mps_index]:
114 print(
"WARNING: Job ", mps_index, end=
' ')
115 print(
"in state RUN, neither found by htcondor, nor bjobs, nor find", end=
' ')
116 print(
"LSFJOB directory!")
121 for job_id, mps_index
in submitted_jobs.items():
122 for status
in (
"SETUP",
"DONE",
"FETCH",
"TIMEL",
"SUBTD"):
123 if status
in lib.JOBSTATUS[mps_index]:
124 print(
"Funny entry index", mps_index,
" job", lib.JOBID[mps_index], end=
' ')
125 print(
" status", lib.JOBSTATUS[mps_index])
const uint16_t range(const Frame &aFrame)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
bool decode(bool &, std::string const &)