Skip to content

Commit 4707a0d

Browse files
committed
EPN Topology generation: use lock file to find a workdir since partition labels are still not available
1 parent 9bd3ef2 commit 4707a0d

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

DATA/tools/epn/gen_topo_o2dpg.sh

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,17 @@ if [ -z "$IS_SIMULATED_DATA" ]; then echo \$IS_SIMULATED_DATA missing; exit 1; f
2727
if [ -z "$GEN_TOPO_ODC_EPN_TOPO_ARGS" ]; then echo \$GEN_TOPO_ODC_EPN_TOPO_ARGS missing; exit 1; fi
2828
if [ -z "$GEN_TOPO_EPN_CCDB_SERVER" ]; then echo \$GEN_TOPO_EPN_CCDB_SERVER missing; exit 1; fi
2929

30-
export GEN_TOPO_WORKDIR=$GEN_TOPO_WORKDIR/${GEN_TOPO_PARTITION}_${GEN_TOPO_ONTHEFLY}
30+
for i in `seq 1 100`; do
31+
exec 100>${GEN_TOPO_WORKDIR}/${i}.lock || { echo Cannot create file descriptor for lock file 1>&2; exit 1; }
32+
flock -n -E 100 100
33+
RETVAL=$?
34+
[[ $RETVAL == 100 ]] && continue
35+
[[ $RETVAL != 0 ]] && { echo Cannot open lock file, retval $RETVAL 1>&2; exit 1; }
36+
export GEN_TOPO_WORKDIR=$GEN_TOPO_WORKDIR/${i}_${GEN_TOPO_ONTHEFLY}
37+
GEN_TOPO_LOCKFILE=${GEN_TOPO_WORKDIR}/${i}.lock
38+
break
39+
done
40+
[[ -z $GEN_TOPO_LOCKFILE ]] && { echo Topology generation could not obtained a work dir 1>&1; exit 1; }
3141

3242
if [[ "0$DDMODE" == "0discard" ]] || [[ "0$DDMODE" == "0disk" ]]; then
3343
export GEN_TOPO_LIBRARY_FILE="production/no-processing.desc"
@@ -41,7 +51,7 @@ if [ $GEN_TOPO_HASH == 1 ]; then
4151
if [ "0$GEN_TOPO_ONTHEFLY" == "01" ]; then
4252
export GEN_TOPO_CACHEABLE=1
4353
fi
44-
CACHE_HASH=`echo $GEN_TOPO_PARTITION $GEN_TOPO_SOURCE $GEN_TOPO_LIBRARY_FILE $GEN_TOPO_WORKFLOW_NAME $OVERRIDE_PDPSUITE_VERSION $SET_QCJSON_VERSION $DD_DISK_FRACTION $SHM_MANAGER_SHMID $WORKFLOW_DETECTORS $WORKFLOW_DETECTORS_QC $WORKFLOW_DETECTORS_CALIB $WORKFLOW_PARAMETERS $RECO_NUM_NODES_OVERRIDE $DDMODE $DDWORKFLOW $INRAWCHANNAME $FILEWORKDIR $CTF_DIR | md5sum | awk '{print $1}'`
54+
CACHE_HASH=`echo $GEN_TOPO_SOURCE $GEN_TOPO_LIBRARY_FILE $GEN_TOPO_WORKFLOW_NAME $OVERRIDE_PDPSUITE_VERSION $SET_QCJSON_VERSION $DD_DISK_FRACTION $SHM_MANAGER_SHMID $WORKFLOW_DETECTORS $WORKFLOW_DETECTORS_QC $WORKFLOW_DETECTORS_CALIB $WORKFLOW_PARAMETERS $RECO_NUM_NODES_OVERRIDE $DDMODE $DDWORKFLOW $INRAWCHANNAME $FILEWORKDIR $CTF_DIR | md5sum | awk '{print $1}'`
4555
if [ "0$GEN_TOPO_WIPE_CACHE" == "01" ]; then
4656
rm -f cache/$CACHE_HASH
4757
fi
@@ -78,3 +88,4 @@ fi
7888
cat $GEN_TOPO_WORKDIR/output.xml
7989
echo Removing temporary output file $GEN_TOPO_WORKDIR/output.xml 1>&2
8090
rm $GEN_TOPO_WORKDIR/output.xml
91+
rm -f $GEN_TOPO_LOCKFILE

0 commit comments

Comments
 (0)