mirror of
https://github.com/Terranom674/Piwigo_Bratonien_Tools.git
synced 2026-09-19 16:24:33 +00:00
Replay queued sync priority after active warmup
This commit is contained in:
@@ -9,6 +9,7 @@ shift || true
|
||||
|
||||
mkdir -p -- "$STATE_DIR"
|
||||
LOCK_FILE="$STATE_DIR/webdav-sync.lock"
|
||||
PRIORITY_FILE="$STATE_DIR/webdav-cache-warmup-priority-sync"
|
||||
|
||||
# Der Connector-Sync nutzt denselben Lock exklusiv. Der Warmup hält ihn für
|
||||
# seinen gesamten Lauf nur lesend/geteilt. Dadurch kann der Placeholder- und
|
||||
@@ -16,4 +17,42 @@ LOCK_FILE="$STATE_DIR/webdav-sync.lock"
|
||||
# unter dem Warmup ausgetauscht werden.
|
||||
exec 9>"$LOCK_FILE"
|
||||
flock -s 9
|
||||
exec "$@"
|
||||
|
||||
COMMAND=("$@")
|
||||
|
||||
run_command() {
|
||||
"${COMMAND[@]}"
|
||||
}
|
||||
|
||||
result=0
|
||||
if ! run_command; then
|
||||
result=$?
|
||||
fi
|
||||
|
||||
# Ein Connector-Sync kann während eines bereits laufenden Warmups neue Alben
|
||||
# melden. Der Dispatcher legt dafür nur eine Prioritätsmarke an; er startet
|
||||
# keinen zweiten konkurrierenden Worker. Falls der aktive Lauf die Marke noch
|
||||
# nicht selbst übernehmen konnte, wird sie hier nach seinem sauberen Ende
|
||||
# garantiert nachgeholt. Dadurch geht ein Sofort-Warmup nie verloren.
|
||||
if [[ -f "$PRIORITY_FILE" ]]; then
|
||||
rm -f -- "$PRIORITY_FILE"
|
||||
SYNC_COMMAND=()
|
||||
replaced=0
|
||||
for arg in "${COMMAND[@]}"; do
|
||||
if [[ "$arg" == --mode=* ]]; then
|
||||
SYNC_COMMAND+=("--mode=sync")
|
||||
replaced=1
|
||||
else
|
||||
SYNC_COMMAND+=("$arg")
|
||||
fi
|
||||
done
|
||||
if [[ "$replaced" -eq 0 ]]; then
|
||||
SYNC_COMMAND+=("--mode=sync")
|
||||
fi
|
||||
|
||||
if ! "${SYNC_COMMAND[@]}"; then
|
||||
result=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
exit "$result"
|
||||
|
||||
Reference in New Issue
Block a user