Fail-Fast
Fail-Fast (sinngemäß „schneller Abbruch“) bezeichnet die Eigenschaft eines Systems, Fehler frühzeitig zu erkennen. Ein Fail-Fast-System ist so konzipiert, dass es an seinen Schnittstellen Fehler oder Zustände, die zu Fehlern führen, erkennt und aufzeigt. Üblicherweise beenden sich Fail-Fast-Systeme im Fehlerfall selbst und versuchen nicht, mit dem Fehler weiterzuarbeiten.
Fail-Fast-Systeme überprüfen oft nicht allein die Schnittstellen, sondern auch den Zustand eines Systems an verschiedenen Stellen, um Fehler frühzeitig zu erkennen. Dabei wird die Fehlerbehandlung an den Aufrufer des Systems weiterdelegiert – kann dieser es in einen sicheren Zustand versetzen, so spricht man von Fail-Safe.
Anwendung von Fail-Fast-Systemen
Fail-Fast-Systeme oder -Module werden dann gegenüber herkömmlichen Systemen bevorzugt, wenn das frühzeitige Erkennen, Aufzeigen und schlussendliche Behandeln von Fehlerzuständen gegenüber einer potentiell fehlerhaften Abarbeitung sinnvoll erscheint. Dies ist insbesondere dann der Fall, wenn Fehlerzustände so lange nicht offenkundig werden, bis sie zu Fehlern in anderen Modulen oder Systemen führen bzw. zu irreversiblen oder kostspieligen Schäden führen.
Bei der Erstellung von fehlertoleranten Systemen durch redundante Komponenten sollte jede einzelne Komponente fail-fast sein, um dem Gesamtsystem rechtzeitig Informationen zur Verfügung zu stellen, um den Fehler auszugleichen.
Fail-Fast-Systeme unterstützen das Auffinden von Fehlerursachen, weil derartige Systeme Fehler zeitnaher und mit exakteren Informationen liefern. In fehlertoleranten Systemen können Fehler unentdeckt bleiben, in Systemen, die weder fehlertolerant noch fail-fast sind, können diese zu späteren Zeitpunkten scheinbar unabhängige Probleme verursachen. Es kann aufwändig sein, diese auf den ursprünglichen Fehler zurückzuführen.
Beispiele
- In der Softwaretechnik ist ein Fail Fast Iterator ein Iterator, der einen Fehler meldet, sobald die Liste, über die er iteriert, während der Iteration verändert wird.
- Ein Rechenprogramm erkennt vor der Ausführung einer Division, dass der Divisor gleich Null ist und liefert eine Fehlermeldung zurück, anstatt eine Division durch Null durchzuführen, welche ein undefiniertes Ergebnis hätte.
Siehe auch
Weblinks
- Jim Gray: Why Do Computers Stop and What Can Be Done About It. (PDF; 924 kB) Tandem Computers, Juni 1985, S. 35, abgerufen am 29. Januar 2012 (englisch).
- Jim Shore: Fail Fast. (PDF; 123 kB) Martin Fowler, 2004, S. 21–25, abgerufen am 29. Januar 2012 (englisch).
- Fail Fast. Abgerufen am 29. Januar 2012 (englisch). – Fail Fast im Portland Pattern Repository