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