1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
#!/bin/sh
# L1Trigger O2O - set IOVs
nflag=0
oflag=""
fflag=""
xflag=""
while getopts 'nofxh' OPTION
do
case $OPTION in
n) nflag=1
;;
o) oflag="-o"
;;
f) fflag="-f"
;;
x) xflag="-x"
;;
h) echo "Usage: [-n] runnum L1_KEY"
echo " -n: no RS"
echo " -o: overwrite RS keys"
echo " -f: force IOV update"
echo " -x: write to DB instead of local file"
exit
;;
esac
done
shift $(($OPTIND - 1))
# arguments
run=$1
l1Key=$2
release=CMSSW_7_4_2
workdir=/nfshome0/l1emulator/run2/o2o/v7/
version=015
logfile=${workdir}/o2o-setIOV-${version}.log
summaryfile=${workdir}/o2o-summary
lockfile=o2o-setIOV.lock
echo "`date` : o2o-setIOV-l1Key.sh $run $l1Key" | tee -a ${logfile}
echo "`uptime`" | tee -a ${logfile}
START=$(date +%s)
if [ $# -lt 2 ]
then
echo "Wrong number of arguments. Usage: $0 [-n] runnum L1_KEY" | tee -a ${logfile}
exit 127
fi
# setup CMSSW
source /data/cmssw/cmsset_default.sh
cd ${workdir}/${release}
cmsenv
cd ../o2o/
SCRIPTS=${workdir}/${release}/src/CondTools/L1TriggerExt/scripts
# Check for semaphore file
if [ -f ${lockfile} ]
then
echo "$0 already running. Aborting process." | tee -a ${logfile}
echo "$0 already running. Aborting process." 1>&2
tail -4 ${logfile} >> ${summaryfile}
exit 50
else
touch $lockfile
fi
# Delete semaphore and exit if any signal is trapped
# KILL signal (9) is not trapped even though it is listed below.
trap "rm -f ${lockfile}; mv tmp.log tmp.log.terminated; exit" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
# run script; args are run key
rm -f tmp.log
echo "`date`" >& tmp.log
# Check if o2o-tscKey.sh is running. If so, wait 15 seconds to prevent simultaneous writing ot ORCON.
if [ -f o2o-tscKey.lock ]
then
echo "o2o-tscKey.sh currently running. Wait 15 seconds...." >> tmp.log 2>&1
sleep 15
echo "Resuming process." >> tmp.log 2>&1
fi
o2ocode2=0
if [ ${nflag} -eq 0 ]
then
echo "`date` : setting RS keys and IOVs" >> tmp.log 2>&1
${SCRIPTS}/runL1-O2O-rs-keysFromL1Key.sh ${xflag} ${oflag} ${fflag} ${run} ${l1Key} >> tmp.log 2>&1
o2ocode2=$?
fi
echo "`date` : setting TSC IOVs" >> tmp.log 2>&1
tscKey=`$CMSSW_BASE/src/CondTools/L1Trigger/scripts/getKeys.sh -t ${l1Key}`
echo "`date` : parsed tscKey = ${tscKey}" >> tmp.log 2>&1
$SCRIPTS/runL1-O2O-iov.sh ${xflag} ${oflag} ${fflag} ${run} ${tscKey} >> tmp.log 2>&1
o2ocode1=$?
tail -2 ${logfile} >> ${summaryfile}
# Filter CORAL debug output into different file, which gets deleted if no errors
grep -E "CORAL.*Info|CORAL.*Debug" tmp.log >& coraldebug-${run}.log
grep -Ev "CORAL.*Info|CORAL.*Debug" tmp.log | tee -a ${logfile}
#cat tmp.log | tee -a /nfshome0/popcondev/L1Job/o2o-setIOV-${version}.log
# log TSC key and RS keys
echo "runNumber=${run} tscKey=${tscKey}" >> ./keylogs/tsckeys.txt
if [ ${nflag} -eq 0 ]
then
grep KEYLOG tmp.log | sed 's/KEYLOG //' >> ./keylogs/rskeys.txt
fi
rm -f tmp.log
echo "cmsRun status (TSC) ${o2ocode1}" | tee -a ${logfile}
echo "cmsRun status (RS) ${o2ocode2}" | tee -a ${logfile}
o2ocode=`echo ${o2ocode1} + ${o2ocode2} | bc`
if [ ${o2ocode} -eq 0 ]
then
echo "L1-O2O-INFO: o2o-setIOV-l1Key-slc5.sh successful"
rm -f coraldebug-${run}.log
else
if [ ${o2ocode1} -eq 90 -o ${o2ocode2} -eq 90 ]
then
echo "L1-O2O-ERROR: problem with Oracle databases."
echo "L1-O2O-ERROR: problem with Oracle databases." 1>&2
else
echo "L1-O2O-ERROR: o2o-setIOV-l1Key-slc5.sh failed!"
echo "L1-O2O-ERROR: o2o-setIOV-l1Key-slc5.sh failed!" 1>&2
fi
fi
echo "`date` : o2o-setIOV-l1Key-slc5.sh finished : ${run} ${l1Key}" | tee -a ${logfile}
END=$(date +%s)
DIFF=$(( $END - $START ))
if [ ${DIFF} -gt 60 ]
then
echo "O2O SLOW: `date`, ${DIFF} seconds for ${run} ${l1Key}" | tee -a ${logfile}
else
echo "Time elapsed: ${DIFF} seconds" | tee -a ${logfile}
fi
echo "" | tee -a ${logfile}
tail -6 ${logfile} >> ${summaryfile}
# Delete semaphore file
rm -f ${lockfile}
exit ${o2ocode}
|