3 Migration ueberwachen
julian edited this page 2026-11-04 21:41:54 +01:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Migration überwachen

Nach dem Start läuft eine Migration als eigener Lauf. Status, Verlauf, Protokoll und Abbruch sind an vier Stellen sichtbar: „Migrationen“, Detailseite einer Migration, „Warteschlange“ und Laufdetails.

Zustände eines Laufs

Zustand Bedeutung
queued eingereiht, wartet auf einen freien Platz
running imapsync läuft
success Exit-Code 0
failed mit Fehler beendet
interrupted abgebrochen, durch Neustart unterbrochen oder heruntergefahren

Der Zustand der Migration folgt dem letzten Lauf: success, failed, interrupted, reauth_required oder queued/running, solange ein Lauf aktiv ist.

Wo was zu sehen ist

  • „Migrationen“: Tabelle mit Quelle, Ziel, Status, Priorität, Zeitplan, letztem Ergebnis und Fehlercode; Filter nach Status, Suche nach Name/Adresse.
  • Detailseite: Stammdaten, Ordnerauswahl, Zeitplan, Wiederholungen (retry_count / max_retries), nächster Versuch, Laufhistorie sowie Aktionen (starten, abbrechen, wiederholen, bearbeiten, deaktivieren, löschen).
  • „Warteschlange“: aktive Läufe mit PID, wartende Läufe in Abarbeitungsreihenfolge, nächste Termine, Pause/Fortsetzen.
  • Laufdetails: Status, Start, Ende, Dauer, Exit-Code, Fehlercode, Protokoll mit Suche und Fehlerfilter.

Fortschritt

Es gibt keinen Fortschrittsbalken und keine Prozentanzeige. imapsync liefert keinen belastbaren Nachrichtenfortschritt; die Oberfläche zeigt deshalb Aktivität (laufender Prozess, PID, Laufzeit) statt einer geschätzten Zahl. Die übertragene Menge steht nach dem Lauf im Protokoll.

Protokolle

Jeder Lauf schreibt data/logs/<run-id>.log.

  • Zeilen werden vor dem Schreiben redigiert: Access-Tokens, Bearer-/ XOAUTH2-Muster, Passwörter und bekannte Secret-Werte.
  • Dateipfade der temporären Secret-Dateien bleiben sichtbar, ihre Inhalte nicht.
  • Die Datei ist auf 5 MB begrenzt (RUN_LOG_MAX_BYTES). Danach erscheint [log truncated: size limit reached]; der Lauf läuft weiter.
  • Das Protokoll enthält Aufruf, Quell- und Zielhost, Exit-Code und die imapsync-Ausgabe — keine Tokens oder Passwörter.
curl "http://127.0.0.1:8000/api/v1/runs/<run-id>/logs?offset=0&limit=200" \
  -b cookies.txt

Die Antwort enthält lines, next_offset und eof. Der Pfad wird serverseitig aus der Lauf-ID aufgelöst; frei übergebene Dateipfade sind nicht möglich.

Abbrechen

„Abbrechen“ beendet den laufenden Prozess (Windows: terminate(), danach kill(); Linux: SIGTERM, nach Wartezeit SIGKILL) und markiert den Lauf als interrupted mit error_code = cancelled.

  • Bereits übertragene Nachrichten bleiben im Ziel; es wird nichts zurückgerollt.
  • Temporäre Token- und Passwortdateien werden gelöscht.
  • Ein späterer Lauf setzt fort; vorhandene Nachrichten werden über Message-Id/Received erkannt und nicht doppelt angelegt.
  • Ein Abbruch vor dem Prozessstart wird ebenfalls als interrupted vermerkt.
  • Wartende Läufe lassen sich stattdessen aus der Warteschlange entfernen.

Wiederholungen

Nach einem Fehler entscheidet die Fehlerklasse:

Klasse Beispiele Verhalten
temporär Verbindung, TLS, Quota, Timeout, Übertragung mit Fehlern erneuter Versuch mit Backoff
permanent Authentifizierung, reauth_required, ungültige Parameter, fehlende Laufzeit, Runner-Fehler, Abbruch keine Wiederholung

Backoff: min(RETRY_MAX_SECONDS, RETRY_BASE_SECONDS × 2^(Versuch−1)), also standardmäßig 60 s, 120 s, 240 s … bis maximal 1 Stunde. max_retries begrenzt die Versuche (Standard 3); danach bleibt die Migration failed mit last_error. Eine Endlosschleife gibt es nicht.

„Wiederholen“ plant einen fehlgeschlagenen Lauf manuell erneut ein und setzt den Retry-Zähler zurück. Der neue Lauf erscheint als queued mit trigger = retry.

Warteschlange steuern

Aktion Wirkung
Pausieren keine neuen Läufe; laufende Prozesse laufen weiter
Fortsetzen Abarbeitung und Zeitplanung laufen wieder an
Wartenden Lauf entfernen Lauf wird aus der Queue genommen, ohne Prozessabbruch

Die Parallelität ist auf zwei gleichzeitige Migrationen begrenzt (MAX_PARALLEL_MIGRATIONS). Die Reihenfolge ergibt sich aus Priorität (absteigend) und Erstellzeitpunkt (aufsteigend); eine Migration mit laufendem Lauf wird übersprungen, damit andere nicht blockiert werden. Bei pausierter Warteschlange werden auch fällige Zeitpläne nicht eingereiht.

Verhalten nach einem Neustart

  • running-Läufe werden zu interrupted. Lebt die gespeicherte PID noch, lautet der Fehlercode orphan_process, sonst interrupted_by_restart.
  • queued-Läufe bleiben erhalten und werden weiter abgearbeitet.
  • Unterbrochene Läufe werden nicht automatisch neu gestartet; der Administrator entscheidet über „Wiederholen“ oder den nächsten Termin.

Grund: Ein automatischer Neustart könnte einen noch laufenden Prozess verdoppeln. Die PID-Prüfung ist eine Heuristik; eine wiederverwendete PID führt höchstens zu einer falschen Markierung, nie zu einem Doppelstart.

Fehlercodes lesen

Exit-Code Fehlercode Bedeutung
0 – Erfolg
161, 16 reauth_required / imapsync_auth_source Microsoft-Anmeldung ungültig
162 imapsync_auth_target Zielanmeldung fehlgeschlagen
10, 101, 102 imapsync_connection* Server nicht erreichbar
12 imapsync_tls TLS-Verbindung fehlgeschlagen
21 imapsync_subfolder_missing angegebener Quellordner fehlt
111, 112 imapsync_with_errors / imapsync_errors_max Übertragung mit Fehlern
113 imapsync_overquota Zielpostfach ohne Speicherplatz
114–121 imapsync_append/fetch/create/select/flags/search Ordner- oder Nachrichtenfehler

Bei reauth_required muss das Microsoft-Konto neu autorisiert werden; ein erneuter Lauf ohne Anmeldung schlägt wieder fehl. Siehe Microsoft 365 und Fehlerbehebung.