/d/123120
Betroffene Konstellation
macOS Sonoma (15.x), Apple Silicon
tomedo v1.169.0.21
Aktionsketten, Auswahlfelder und Custom-Karteieinträge reagieren mit Mehrsekunden-Verzögerung.
System: Load Average teils >12, starker Swap, dauernde I/O-Bursts.
Ich habe für die Ursachenermittlung und Lösung sehr viel Zeit investiert und Klaus & Ingo befragt. Nachfolgend die kompakte Zusammenfassung, damit andere nicht erneut bei null beginnen müssen.
Drei Ursachen
1. Endlos-Mount-Loop auf ein nicht erreichbares SMB-Share
tomedo versucht minütlich, einen Dateiimport-Pfad zu laden, der nicht oder nicht mehr gemountet ist. Im Log erscheint im 60-Sekunden-Takt die Meldung, dass der Pfad unter /Volumes/... nicht für den automatischen Dateiimport geladen werden konnte und in 60 Sekunden erneut versucht wird. Dadurch entstehen dauerhaft Log-Schreiblast und SMB-Retry-Traffic im Hintergrund.
2. ABDA-Vollersatz statt inkrementellem Update
Die Ordner unter ~/Library/tomedo/abdaVersions/ sind nahezu leer. Dadurch baut tomedo die ABDA-/Medikamentendatenbank mit rund 1,5 GB SQLite bei jedem Start vollständig neu auf, anstatt zu erkennen, dass sie bereits aktuell ist. Dies verursacht erhebliche I/O-Last.
3. Auto-Relaunch / Auto-Restart
Die Einstellung ZSTSPApplyPackagesDuringRestart führt dazu, dass Pakete beim Neustart automatisch angewendet werden. Dadurch entsteht ein Zyklus aus Relaunch, ABDA-Neuaufbau und erneutem Scan. Die zeitliche Überlagerung dieser Prozesse erklärt die Lastspitzen.
Lösung (nur Einstellungen, keine Datenbanken löschen!)
Den Dateiimport des nicht erreichbaren SMB-Shares deaktivieren oder auf einen vorhandenen lokalen Pfad umstellen. In tomedo: Einstellungen → Datenübertragung / Kartei-Anhang-Listener und den betroffenen Pfad entfernen. Alternativ das SMB-Share dauerhaft über die macOS-Anmeldeobjekte einbinden.
Das ABDA-Auto-Update auf „manuell“ stellen (Einstellungen → ABDA/Medikamenten-Datenbank). Danach erkennt tomedo, dass die Datenbank aktuell ist, und führt keinen vollständigen Neuaufbau mehr durch.
Den automatischen Relaunch beziehungsweise Auto-Restart deaktivieren, damit kein Zyklus aus Relaunch und ABDA-Neuaufbau entsteht.
Nach diesen drei Änderungen war der Mount-Loop sofort beendet. Es erfolgte kein weiterer 60-Sekunden-Retry und die ABDA-Datenbank wurde beim Neustart nicht erneut vollständig aufgebaut.
Hinweis an zollsoft
Der Mount-Retry bei nicht erreichbaren SMB-Freigaben sollte mit einem Backoff und einer maximalen Anzahl von Wiederholungsversuchen versehen werden, anstatt dauerhaft alle 60 Sekunden erneut zu starten.
Das ABDA-Update sollte bei leeren abdaVersions-Ordnern nicht automatisch einen vollständigen Datenbankersatz auslösen.
Sicherheitshinweis: In ~/Library/tomedo/tomedo.log werden SMB-Zugangsdaten (Benutzername und Passwort im smb://…-String) im Klartext protokolliert. Diese Informationen sollten nicht im Log erscheinen oder verschlüsselt gespeichert werden.