deforaos-jobs: revisit the locking
This commit is contained in:
parent
152baa6274
commit
d68ac0e3c5
|
@ -96,18 +96,18 @@ _database_exec()
|
|||
fi
|
||||
|
||||
_database_init || return 2
|
||||
_database_lock || return 3
|
||||
_database_lock "$DATABASE_FILE" || return 3
|
||||
_database_query "$QUERY_EXEC_SELECT" | (IFS="|"
|
||||
read header
|
||||
read empty jobs_id command empty
|
||||
if [ -z "$jobs_id" ]; then
|
||||
_database_unlock || return 4
|
||||
_database_unlock "$DATABASE_FILE" || return 4
|
||||
return 0
|
||||
fi
|
||||
#XXX TOCTOU
|
||||
QUERY="UPDATE jobs SET started=datetime() WHERE jobs_id='$jobs_id'"
|
||||
_database_query "$QUERY" > "$DEVNULL"
|
||||
_database_unlock
|
||||
_database_unlock "$DATABASE_FILE"
|
||||
code=-1
|
||||
if [ -n "$command" ]; then
|
||||
_info "Executing command: $command"
|
||||
|
@ -133,9 +133,9 @@ _database_init()
|
|||
fi
|
||||
if [ ! -f "$DATABASE_FILE" ]; then
|
||||
_info "Initializing the database"
|
||||
_database_lock || return 3
|
||||
_database_lock "$DATABASE_FILE" || return 3
|
||||
_database_query "$QUERY_INIT" > "$DEVNULL" || ret=2
|
||||
_database_unlock || return 4
|
||||
_database_unlock "$DATABASE_FILE" || return 4
|
||||
fi
|
||||
return $ret
|
||||
}
|
||||
|
@ -157,7 +157,9 @@ _database_list()
|
|||
#database_lock
|
||||
_database_lock()
|
||||
{
|
||||
$DEBUG $LOCK "${DATABASE_FILE%.db}"
|
||||
filename="$1"
|
||||
|
||||
$DEBUG $LOCK "$filename.lock"
|
||||
}
|
||||
|
||||
|
||||
|
@ -171,7 +173,9 @@ _database_query()
|
|||
#database_unlock
|
||||
_database_unlock()
|
||||
{
|
||||
$DEBUG $UNLOCK "${DATABASE_FILE%.db}"
|
||||
filename="$1"
|
||||
|
||||
$DEBUG $UNLOCK "$filename.lock"
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user