mirror of https://github.com/openXC7/prjxray.git
Merge pull request #696 from antmicro/lock-mergedb
utils: mergedb: lock database accesses
This commit is contained in:
commit
05055fe028
|
|
@ -11,7 +11,10 @@ FUZZONLY=N
|
||||||
BITONLY=N
|
BITONLY=N
|
||||||
|
|
||||||
all:
|
all:
|
||||||
clean: clean_fuzzers clean_logs
|
clean: clean_fuzzers clean_logs clean_locks
|
||||||
|
|
||||||
|
clean_locks:
|
||||||
|
rm -rf /tmp/segbits_*.db.lock
|
||||||
|
|
||||||
define fuzzer
|
define fuzzer
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,9 @@ test -e "$2"
|
||||||
|
|
||||||
tmp1=`mktemp -p .`
|
tmp1=`mktemp -p .`
|
||||||
tmp2=`mktemp -p .`
|
tmp2=`mktemp -p .`
|
||||||
|
LOCKFILE="/tmp/segbits_$1.db.lock"
|
||||||
|
LOCKTIMEOUT=30 # 30s timeout
|
||||||
|
LOCKID=222
|
||||||
|
|
||||||
function finish {
|
function finish {
|
||||||
echo "Cleaning up temp files"
|
echo "Cleaning up temp files"
|
||||||
|
|
@ -18,10 +21,24 @@ function finish {
|
||||||
trap finish EXIT
|
trap finish EXIT
|
||||||
|
|
||||||
db=$XRAY_DATABASE_DIR/$XRAY_DATABASE/segbits_$1.db
|
db=$XRAY_DATABASE_DIR/$XRAY_DATABASE/segbits_$1.db
|
||||||
|
|
||||||
|
# if the DB exists acquire a lock
|
||||||
|
if [ -f $db ]; then
|
||||||
|
eval "exec $LOCKID>$LOCKFILE"
|
||||||
|
# the lock is automatically released on script exit
|
||||||
|
flock --timeout $LOCKTIMEOUT $LOCKID
|
||||||
|
if [ ! $? -eq 0 ]; then
|
||||||
|
echo "Timeout while waiting for lock"
|
||||||
|
finish
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Check existing DB
|
# Check existing DB
|
||||||
if [ -f $db ] ; then
|
if [ -f $db ] ; then
|
||||||
${XRAY_PARSEDB} --strict "$db"
|
${XRAY_PARSEDB} --strict "$db"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check new DB
|
# Check new DB
|
||||||
${XRAY_PARSEDB} --strict "$2"
|
${XRAY_PARSEDB} --strict "$2"
|
||||||
|
|
||||||
|
|
@ -112,4 +129,3 @@ else
|
||||||
fi
|
fi
|
||||||
# Check aggregate db for consistency and make canonical
|
# Check aggregate db for consistency and make canonical
|
||||||
${XRAY_PARSEDB} --strict "$tmp2" "$db"
|
${XRAY_PARSEDB} --strict "$tmp2" "$db"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue