Speicherfehler sagen nicht, was zu tun ist — und fallen erst beim ersten Dokument auf #44
Notifications
Total Time Spent: 13 minutes
florian.wilde
13 minutes
No due date set.
Dependencies
No dependencies set.
Reference: florian.wilde/betreuungs-cockpit#44
Reference in New Issue
Block a user
Problem
Beim Ablegen eines Schreibens zeigt die Oberfläche:
Das ist alles. Die tatsächliche Ursache steht nur im Containerlog (
console.errorinsrc/server/actions/schreiben.ts:231). Ohne Serverzugang ist der Fehler nicht zu deuten; mit Serverzugang muss man erst wissen, wo man sucht.In einer echten Fehlersuche am 31.08.2026 lagen nacheinander drei verschiedene Ursachen hinter derselben Meldung:
NoSuchBucket— der Ablagebereich war nie angelegt wordenS3_ENDPOINT— die Anwendung sprach mit einem fremden AnbieterNotImplemented— serverseitige Verschlüsselung ohne KMS (siehe #42)Jedes Mal derselbe Satz. Die Suche dauerte entsprechend.
Zwei Dinge fehlen
1. Verständliche Meldungen. Die häufigen Speicherfehler sollen sagen, was los ist und was zu tun ist — ohne Interna preiszugeben:
NoSuchBucketNotImplemented(SSE)AccessDenied,SignatureDoesNotMatchBetrifft nicht nur
schreiben.ts, sondern alle Stellen, die ablegen: Dokumenten-Upload, Berichte, Serienlauf.2. Ein Startcheck. Beim Hochfahren einmal gegen den Speicher prüfen: erreichbar, Bereich vorhanden, Schreibrecht. Das Ergebnis gehört ins Log und nach
/api/gesundheit. Heute fällt ein kaputt konfigurierter Speicher erst auf, wenn jemand ein Dokument ablegen will — im Zweifel Wochen nach der Installation, und dann mitten in der Arbeit.Der Check darf den Start nicht verhindern: Eine Anwendung, die wegen des Speichers nicht hochkommt, ist schlimmer als eine, die ihn meldet.
Akzeptanzkriterien
/api/gesundheitweist den Speicherzustand aus.🚀 Umgesetzt und nach
mainübernommen.Vorgehen
src/lib/speicher/fehler.tsübersetzt die vier bekannten Fälle. Grundsatz: Es wird nichts durchgereicht, was der Speicher sagt — fremde Fehlertexte tragen Hostnamen, Eimernamen und Anfragekennungen.schreiben.tsunddokumente.ts— die beiden Stellen, an denen Benutzer eine Ablage anstoßen.src/lib/speicher/pruefung.ts: schreibt eine Probedatei, liest sie zurück, räumt sie weg./api/gesundheitund als Logzeile.Zwei Umwege, die ich nehmen musste
Kein
instrumentation.ts. Der naheliegende Starthaken wird auch für die Edge-Laufzeit gebündelt; über die Treiber landetnode:pathin einem Bündel, in dem es das nicht gibt, und der Build schlägt fehl. Ich habe es gebaut, den Fehler gesehen und umgestellt. Die Prüfung hängt jetzt an der Gesundheitsabfrage — die der Healthcheck ohnehin ab 40 s nach dem Start aufruft, das Ergebnis ist also dasselbe.Kein 503 bei gestörtem Speicher. Sonst startet der Healthcheck den Behälter neu und macht die ganze Akte unerreichbar — wegen eines Teils, den ein Neustart nicht repariert.
Ein eigener Fehler, beim Testschreiben gefunden. Die Codeermittlung las
namevorcode. Bei einem Node-Netzwerkfehler steht innameschlicht'Error'— der echte Code wäre nie erreicht worden, undECONNREFUSEDhätte weiterhin die allgemeine Meldung ergeben. Der Test hat es aufgedeckt, bevor es jemand im Betrieb tut.Geprüft: 760 Unit-Tests ·
tsc· Lint · vollständiger Produktions-Build · drei Mutationen, jede wird rot.Was du davon siehst: Wäre der Fehler von gestern heute aufgetreten, stünde in der Oberfläche „Im Objektspeicher fehlt der Ablagebereich … siehe INSTALLATION.md, Schritt 6" statt „Das Schreiben konnte nicht abgelegt werden." Und beim Blick auf
/api/gesundheithättest du es schon vorher gesehen.Pull Request: #52 (gemergt)