Schedule-Integration

Schedule-Integration

Server Sync integriert sich direkt in das Pelican Schedule-System.


SyncTaskSchema

Registriert „Server Sync" als Task-Typ im Schedule-System:

Eigenschaft Wert
Task-ID server_sync
Payload Sync-Pair-ID
Anzeige Pair-Richtungsanzeige + Sync-Modus
Verfügbarkeit Nur wenn der Server aktive Sync-Paare hat

Task-Ausführung

  1. Pair laden und prüfen ob aktiviert
  2. Cache Lock holen: server_sync_schedule_{pairId} (10 Min. Timeout)
  3. Bei sync_mode = on_restart: Partner-Server stoppen + 15s warten
  4. SyncService::executeSync() ausführen
  5. Bei sync_mode = on_restart: Partner-Server starten
  6. Lock freigeben

Automatischer Scheduler

Ein Scheduler läuft jede Minute:

server-sync:run-due — jede Minute, ohne Überlappung (15 Min. Lock)
server-sync:cleanup-logs — täglich

Ablauf (jede Minute):

  1. Stale-Syncs zurücksetzen: Pairs im Status running seit >30 Min. → failed
  2. Concurrent Limit prüfen: Verfügbare Slots berechnen
  3. Fällige Paare laden: SyncPair::dueForSync() (begrenzt auf verfügbare Slots)
  4. Synchron ausführen (nicht über Queue)

Log-Cleanup:

Täglich werden alle SyncLog-Einträge älter als log_retention_days gelöscht.


Create Sync Schedule (Admin)

Erstellt einen Zeitplan mit vorkonfigurierten Tasks:

Sequence Aktion Payload Zeitversatz
1 power stop 0s
2 server_sync Pair-ID 20s
3 power start 5s

Preset-Optionen:

Preset Cron
Stündlich 0 * * * *
Alle 6 Stunden 0 */6 * * *
Alle 12 Stunden 0 */12 * * *
Täglich 0 0 * * *
Täglich 3 Uhr 0 3 * * *

Schedule-Mirroring

Bei Aktivierung wird der Zeitplan automatisch auf den Partner-Server gespiegelt:

  • Mirror-Name: "{originalName} [Sync Mirror]"
  • only_when_online = false (Sync läuft auch bei Offline-Server)
  • Alle Tasks werden geklont
  • Änderungen am Original-Schedule werden automatisch synchronisiert
  • Beim Löschen des Quell-Schedules wird der Mirror entfernt