Skip to content

Commit 2f597fe

Browse files
committed
Add script to reconstruct using dpl-workflow using StfBuilder/raw-tf-reader/ctf-reader as input
1 parent 63fecb2 commit 2f597fe

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
#!/bin/bash
2+
3+
MYDIR="$(dirname $(readlink -f $0))"
4+
5+
if [[ -z $1 || -z $2 ]]; then
6+
echo "ERROR: Command line arguments missing. Syntax: run-workflow-on-inputlist.sh [CTF | DD | TF] [name of file with list of files to be processed] [Timeout in seconds (optional: default = disabled)] [Log to stdout (optional: default = enabled)]"
7+
exit 1
8+
fi
9+
10+
if [[ `which StfBuilder 2> /dev/null | wc -l` == "0" || -z $O2_ROOT ]]; then
11+
echo "ERROR: DataDistribution or O2 environment not loaded"
12+
exit 1
13+
fi
14+
15+
if [[ $2 != "LOCAL" && ! -f $2 ]]; then
16+
echo "ERROR: List file $2 not found"
17+
exit 1
18+
fi
19+
20+
NUM_PROCS=0
21+
RETVAL=0
22+
START_TIME=`date +%s`
23+
LOG_PREFIX="log_$(date +%Y%m%d-%H%M%S)_"
24+
if [ $2 != "LOCAL" ]; then
25+
export INPUT_FILE_LIST=$2
26+
fi
27+
28+
rm -f ${LOG_PREFIX}*.log /dev/shm/*fmq*
29+
if [[ `ls /dev/shm/*fmq* 2> /dev/null | wc -l` != "0" ]]; then
30+
echo "ERROR: Existing SHM files"
31+
exit 1
32+
fi
33+
34+
cleanup_handler() {
35+
echo "Signal handler $1 received, propagating to childs"
36+
RETVAL=1
37+
for i in `seq 1 $NUM_PROCS`; do
38+
PID_VAR="PID$i"
39+
kill -s $1 ${!PID_VAR} 2> /dev/null
40+
done
41+
}
42+
43+
start_process() {
44+
let NUM_PROCS=$NUM_PROCS+1
45+
$@ > ${LOG_PREFIX}$NUM_PROCS.log &
46+
PID=$!
47+
echo "Started $@ with PID $PID"
48+
eval PID$NUM_PROCS=$PID
49+
}
50+
51+
trap "cleanup_handler INT" SIGINT
52+
trap "cleanup_handler TERM" SIGTERM
53+
54+
echo "Processing $2 in $1 mode"
55+
56+
if [[ $1 == "DD" ]]; then
57+
export EXTINPUT=1
58+
export DD_STARTUP_DELAY=10
59+
start_process $MYDIR/datadistribution.sh
60+
elif [[ $1 == "CTF" ]]; then
61+
export CTFINPUT=1
62+
elif [[ $1 == "TF" ]]; then
63+
export RAWTFINPUT=1
64+
else
65+
echo "ERROR: Unsupported mode $1 requested"
66+
exit 1
67+
fi
68+
start_process $MYDIR/dpl-workflow.sh
69+
70+
if [[ "0$4" != "00" ]]; then
71+
tail -f ${LOG_PREFIX}*.log &
72+
PID_LOG=$!
73+
fi
74+
75+
TIMEOUT_PHASE=0
76+
while [[ `jobs -rl | grep -v " $PID_LOG Running" | wc -l` != "0" ]]; do
77+
sleep 1
78+
if [[ ! -z $3 && $(date +%s) -ge $(($START_TIME + $TIMEOUT_PHASE * 20 + $3)) ]]; then
79+
RETVAL=1
80+
let TIMEOUT_PHASE=$TIMEOUT_PHASE+1
81+
echo "Timeout reached ($3 seconds) - Sending SIGINT signal"
82+
cleanup_handler SIGINT
83+
killall -s SIGINT StfBuilder
84+
killall -s SIGINT o2-dpl-run
85+
fi
86+
done
87+
88+
if [[ "0$4" != "00" ]]; then
89+
kill $PID_LOG
90+
fi
91+
92+
if [[ $RETVAL == 0 ]]; then
93+
echo "Done processing $2 in $1 mode"
94+
else
95+
echo "Error processing $2 in $1 mode"
96+
fi
97+
98+
exit $RETVAL

0 commit comments

Comments
 (0)