Mein größter Fehler
Über Trennzeichen, Encoding und Migration
Hey,
heute möchte ich von meinem bisher größten Fehler berichten. Es geht um die Speicheranbindung unserer Nuxt-App. Wie ich diesen Fehler behoben habe und was ich dabei gelernt habe.
Das Problem
Vor kurzem haben wir festgestellt, dass bei der Speicheranbindung unserer Nuxt-Anwendung anstelle des Trennzeichens "/" versehentlich ":" verwendet wurde. Dies führte zu einem unerwarteten Verhalten: Kommentare von Nutzern, die (warum auch immer) im Dateinamen ein ":" enthielten, wurden in falsche Unterordner verschoben und die Dateien waren somit beschädigt oder unzugänglich.
Der Erste Fix
Um das Problem zu beheben, haben wir einen Fix deployt, der alle Dateinamen URL-encoded. Dies sollte verhindern, dass ":" im Dateinamen Probleme verursacht. Leider haben wir dabei einen wichtigen Schritt übersehen: die Migration der bestehenden Dateien. Dadurch konnten einige Kunden ihre Dokumente nicht mehr öffnen.
Migrationsversuch und neuer Fehler
Um die bestehenden Dateien zu migrieren, habe ich ein Skript geschrieben. Dieses Skript sollte die Dateien in die korrekten Verzeichnisse verschieben. Leider hat sich ein Fehler eingeschlichen: Das Skript berücksichtigte die Ordnerpfade nicht richtig und alle Dateien landeten im Root-Verzeichnis statt in den jeweiligen Auftragsordnern. Dies führte dazu, dass die Dokumente in den korrekten Ordnern verloren gingen. Zu allem Überfluss hatten wir kein Backup der betroffenen Dateien gemacht.
Die Lösung
Nach intensiver Analyse und einigen schlaflosen Nächten haben wir schließlich eine Lösung gefunden:
Fehleranalyse: Wir haben den Fehler identifiziert und einen neuen Fix implementiert, der die Dateien den richtigen Ordnern zuordnet.
Neues Skript: Ein neues, gründlich getestetes Skript verschiebt die Dateien nun wieder in die korrekten Auftragsordner.
Zukünftige Maßnahmen: Um solche Vorfälle in Zukunft zu vermeiden, haben wir einige wichtige Schritte unternommen:
Regelmäßige und automatisierte Backups, um Datenverluste zu verhindern.
Zusätzliche Überprüfungen und Tests bei Änderungen an der Speicheranbindung.
Verbesserung unserer internen Kommunikations- und Freigabeprozesse, um sicherzustellen, dass Migrationen vollständig und korrekt durchgeführt werden.
Fazit
Fehler passieren, besonders in der komplexen Welt der Softwareentwicklung. Wichtig ist, wie man darauf reagiert und daraus lernt. Ich hoffe, dass ich durch die getroffenen Maßnahmen ähnliche Probleme in Zukunft vermeiden kann.
~ Niklas