Wichtig
Detail
Detail
Detail
#27015
Logging im KBDataProducerTask soll Fehlerfälle besser abdecken
Das Logging im tl:KBDataProducerTask ist im Fehlerfall oft nicht ausreichend. Da es in der Gegend aufgrund der inhärenten Komplexität verteilter Anwendungen leider oft zu Problemen kommt, ist es aber hier besonders wichtig, hilfreiche Log-Meldungen zu haben.
Verbesserung
- Wenn der Task abbricht, loggt er bei welche Revisionen das passiert.
- Wenn es zu Exceptions kommt, werden diese immer geloggt werden. Selbst dann, wenn sie anschließend nur weiter geworfen werden.
- Wenn eine Exception propagiert wird, aber dabei wiederum in einem finally Block eine Exception geworfen wird, wird keine mehr unterdrückt. Beide werden letztlich geloggt.
- Der Task loggt auf Level DEBUG, sobald ein weiteres Changeset übertragen wurde.
- Das Logging in dem Task wurde allgemein erweitert.
- Damit während des Tasks der Fortschritt geloggt wird, wurde Logging im tl:TypeFilterRewriter eingebaut.
- Jede Minute wird der aktuelle Status geloggt.
- Das Intervall ist konfigurierbar.
- Bei "großen" Changesets wird bereits vorab die Anzahl der Events geloggt.
- Die Schwelle für "groß" ist konfigurierbar. Der Standardwert ist 1000.
- Jede Minute wird der aktuelle Status geloggt.
Code Migration
Die Klasse TaskResult.TaskResultsByDateComparator wurde gelöscht und durch den Ausdruck Comparator.comparing(TaskResult::getStartDate) ersetzt.
Test
Kein Test.
Begründung: Kann nur schwer getestet werden. Es müssten zufällige Stellen im tl:KBDataProducerTask kaputt gemacht werden und geprüft werden, ob immer alle relevanten Exceptions und Daten im Log landen. Es gibt zwar Frameworks, um zu prüfen wie sich Code verhält, wenn an zufälligen Stellen Exceptions geworfen werden. Aber sowas hier einzubinden wäre viel zu aufwendig für den Zweck. Daher weder ein automatischer Test, noch ein manueller.