Obwohl ich kürzlich schmunzelnd den Artikel The forgotten art of error checking las, so war ich letzte Woche dann doch selbst davon betroffen.
Ich hatte mir ein Python Skript fürs Monitoring gebaut, welches das Backlog einer Datenbank voller serialisierter Objekte zur Verteilung überwacht.
Das hat bisher sehr gut funktioniert, jedoch wunderte ich mich Donnerstags, warum das Backlog plötzlich 100.000 Einträge enthielt und das Monitoring mich nicht informierte. Nach einer kurzen Analyse fand ich die Ursache.
In die Datenbank wurde so oft hineingeschrieben, sodass mein Skript sie jedesmal in einem ge-lockten Zustand vorfand und das Skript somit fehl schlug.
Wenn unter Windows ein Programm erfolgreich war, gibt es den Wert 0 zurück. Bei Problemen den Wert 1 oder größer. Das Problem war nun, dass das Monitoring immer dachte, das Backlog habe sich erholt, da es bei der Data-Collection den Wert 1 erhielt. D.h. das Backlog wuchs stetig an und das Monitoring glaubte aber irrtümlich, dass es wieder auf normalem Stand ist.
Die Moral von der Geschicht:
Probiere und Erwarte...
Auf Deutsch: Benutze das Exception Handling deiner Programmiersprache!
Mittlerweile hab ich das Skript um ein Try-Except erweitert, sodass bei Fehlerfall ein sehr hoher Wert zurück gegeben wird. Das verfälscht evtl. den Graphen aber ein Problem fliegt nicht mehr unter dem Radar...