Naprawa: ekran kont tłumaczy awarię magazynu zamiast dawać 500 #71
Reference in New Issue
Block a user
Delete Branch "fix/konta-blad-magazynu"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ekran „Konta" wywalał się na produkcji błędem 500 bez słowa wyjaśnienia.
Przyczyna
_read()łapał wyłącznie brak pliku i niepoprawny JSON. Każdy inny błąd systemu plików — a na udziale NFS to głównie prawa — leciał na wierzch jako nieobsłużony wyjątek.Odtworzone lokalnie, oba przypadki:
GET /accounts→ 500Nie mogę odczytać pliku kont /app/state/accounts.json: Permission denied…POST /accounts/create→ 500Nie mogę zapisać pliku kont…Dlaczego to szczególnie zły sposób na awarię akurat tutaj
Ekran kont jest jedynym miejscem, z którego administrator może taki problem naprawić. Gołe 500 nie mówi ani co, ani gdzie. Teraz komunikat niesie ścieżkę, powód z systemu operacyjnego i podpowiedź najczęstszej przyczyny.
Szczegóły, które wyszły dopiero z testów
mkstempmusi być w klamrze. Przy katalogu tylko do odczytu wywala się ono pierwsze, jeszcze zanim dojdzie do zapisu i podmiany — obudowanie samegoos.replacenic by nie dało. Złapane testem, nie przeglądem kodu.Uszkodzony plik nie jest nadpisywany. Wcześniej niepoprawny JSON dawał pusty zbiór kont, co przy pierwszym zapisie skasowałoby wszystkie konta bez śladu. Teraz to odmowa z komunikatem, plik zostaje nietknięty — osobny test tego pilnuje.
Weryfikacja
3 nowe testy awarii magazynu. Prezentacja: 290 zielonych.
🤖 Generated with Claude Code