Sperre pro Config und atomare checkzfs-Ausgabe #2

Closed
opened 2026-10-15 17:08:53 +02:00 by thorsten.spille · 0 comments

Problem: Überlappende Läufe derselben Config (Cron alle 5 min + Handstart) stören sich gegenseitig, gesehen auf pve2 und einem Testserver:

  • remote-snapshot-manager: Error: Failed to create snapshot. (Snapshot der Minute existiert schon)
  • mv: cannot stat '/tmp/900_zsync_…' – beide Läufe nutzen dieselbe Spooldatei in /tmp
  • Snapshots, die ein Lauf angelegt, aber nicht repliziert hat

Umsetzung:

  • flock pro Config (z. B. /run/lock/bashclub-zsync-<config>.lock); ein zweiter Lauf bricht mit Logmeldung ab, statt zu warten
  • checkzfs-Ausgabe per mktemp schreiben und atomar per mv in den Spool legen
  • Label nicht doppelt filtern, wenn es schon in snapshot_filter steht (z. B. „failover“ wurde zweimal geprüft)
  • Test: zwei gleichzeitige Läufe

Übergangslösung bis dahin:

flock -n /run/lock/bashclub-zsync-<config>.lock bashclub-zsync -c /etc/bashclub/<config>.conf

Rahmen: Default = bisheriges Verhalten, der Replikations-/Löschalgorithmus bleibt unverändert, optionale Tools werden per which erkannt (fehlen sie, läuft alles wie bisher mit Logmeldung). Eigener Branch/PR mit Test. Teil von 2.0.0, Reihenfolge siehe Roadmap.

**Problem:** Überlappende Läufe derselben Config (Cron alle 5 min + Handstart) stören sich gegenseitig, gesehen auf pve2 und einem Testserver: - `remote-snapshot-manager`: `Error: Failed to create snapshot.` (Snapshot der Minute existiert schon) - `mv: cannot stat '/tmp/900_zsync_…'` – beide Läufe nutzen dieselbe Spooldatei in /tmp - Snapshots, die ein Lauf angelegt, aber nicht repliziert hat **Umsetzung:** - `flock` pro Config (z. B. `/run/lock/bashclub-zsync-<config>.lock`); ein zweiter Lauf bricht mit Logmeldung ab, statt zu warten - checkzfs-Ausgabe per `mktemp` schreiben und atomar per `mv` in den Spool legen - Label nicht doppelt filtern, wenn es schon in `snapshot_filter` steht (z. B. „failover“ wurde zweimal geprüft) - Test: zwei gleichzeitige Läufe **Übergangslösung bis dahin:** ``` flock -n /run/lock/bashclub-zsync-<config>.lock bashclub-zsync -c /etc/bashclub/<config>.conf ``` --- **Rahmen:** Default = bisheriges Verhalten, der Replikations-/Löschalgorithmus bleibt unverändert, optionale Tools werden per `which` erkannt (fehlen sie, läuft alles wie bisher mit Logmeldung). Eigener Branch/PR mit Test. Teil von 2.0.0, Reihenfolge siehe Roadmap.
thorsten.spille added this to the 2.0.0 milestone 2026-10-15 17:08:53 +02:00
Sign in to join this conversation.
No labels
bug
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
bashclub/zsync#2
No description provided.