Add cross-client sync lock via shared directory
Verhindert, dass mehrere Arbeitsplaetze gleichzeitig dasselbe Starface- Adressbuch synchronisieren (Dubletten/Lost-Updates bei echter Ueberlappung). - Neues optionales Setting "Gemeinsames Verzeichnis" (UserSettings.SharedDirectory) in der Einstellungen-Maske inkl. Ordner-Browser. - SyncLock: atomare Lock-Datei (FileMode.CreateNew) im gemeinsamen Verzeichnis, waehrend des Syncs offen gehalten -> bei Absturz gibt das OS das Handle frei und ein anderer Client uebernimmt die verwaiste Datei (Stale-Erkennung 15 Min, Loeschen scheitert am offenen Handle eines lebenden Halters). - MainForm wartet vor dem Sync bis zu 2 Min auf eine freie Sperre, sonst wird der Lauf uebersprungen. Ohne/bei nicht erreichbarem Verzeichnis laeuft der Sync ohne diese Sperre weiter (lokaler Interlocked-Schutz bleibt). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -38,6 +38,13 @@ Versionsschema ist `x.x.x.x` (siehe `release.sh`).
|
||||
|
||||
### Hinzugefuegt
|
||||
|
||||
- **Clientuebergreifende Sync-Sperre (Mehrplatz).** In den Einstellungen laesst
|
||||
sich ein gemeinsames Verzeichnis (Netzlaufwerk/UNC) hinterlegen. Synct ein
|
||||
Arbeitsplatz, legt er dort eine Lock-Datei an (atomar via `CreateNew`); andere
|
||||
Clients warten, bis sie frei ist (bis 2 Min, sonst wird der Lauf uebersprungen).
|
||||
Stuerzt ein Client ab, uebernimmt ein anderer die verwaiste Sperre. Ist kein
|
||||
Verzeichnis konfiguriert oder nicht erreichbar, wird ohne diese Sperre
|
||||
weitergearbeitet (der lokale Schutz auf dem PC bleibt).
|
||||
- **Feldweises 3-Wege-Merge bei Konflikten (bidirektional).** Wenn derselbe
|
||||
Kontakt zwischen zwei Syncs auf beiden Seiten geaendert wurde, bleiben jetzt
|
||||
Aenderungen an *unterschiedlichen* Feldern beide erhalten (z.B. einer aendert
|
||||
|
||||
Reference in New Issue
Block a user