Replay queued sync priority after active warmup

This commit is contained in:
Terranom674
2026-09-03 12:56:56 +02:00
parent 714c487ef2
commit dfd180c11e

View File

@@ -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"