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
- Pair laden und prüfen ob aktiviert
- Cache Lock holen:
server_sync_schedule_{pairId}(10 Min. Timeout) - Bei
sync_mode = on_restart: Partner-Server stoppen + 15s warten SyncService::executeSync()ausführen- Bei
sync_mode = on_restart: Partner-Server starten - 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):
- Stale-Syncs zurücksetzen: Pairs im Status
runningseit >30 Min. →failed - Concurrent Limit prüfen: Verfügbare Slots berechnen
- Fällige Paare laden:
SyncPair::dueForSync()(begrenzt auf verfügbare Slots) - 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