Visione: crash del worker a metà richiesta esce come 500 nudo #14

Closed
opened 2026-09-21 20:14:42 +00:00 by Adriano · 3 comments
Owner

GRAVITÀ: alta
FILE: src/backend/services/vision_service.py:36-52
COSA: _call_worker cattura solo httpx.ConnectError e httpx.ReadTimeout. RemoteProtocolError, ReadError, ConnectTimeout, WriteTimeout, PoolTimeout escono come 500 invece del 502/504 promesso dal docstring.
INPUT: worker muore (OOM, segfault opencv, restart) durante /run.
VERIFICATO: probe pytest con AsyncClient.post che solleva httpx.RemoteProtocolError → "DIES -> RemoteProtocolError non-HTTPException".

ORIGINE: revisione fable del 21/09/2026 su ramo V3.0.0, commit 8cc5e82. Documento completo: _output/2026-09-21-TieMeasureFlow-revisione.md su Wasabi.

GRAVITÀ: alta FILE: src/backend/services/vision_service.py:36-52 COSA: `_call_worker` cattura solo `httpx.ConnectError` e `httpx.ReadTimeout`. `RemoteProtocolError`, `ReadError`, `ConnectTimeout`, `WriteTimeout`, `PoolTimeout` escono come 500 invece del 502/504 promesso dal docstring. INPUT: worker muore (OOM, segfault opencv, restart) durante /run. VERIFICATO: probe pytest con `AsyncClient.post` che solleva `httpx.RemoteProtocolError` → "DIES -> RemoteProtocolError non-HTTPException". ORIGINE: revisione fable del 21/09/2026 su ramo `V3.0.0`, commit 8cc5e82. Documento completo: `_output/2026-09-21-TieMeasureFlow-revisione.md` su Wasabi.
Adriano added the bug label 2026-09-21 20:14:42 +00:00
Adriano added the assegnata:jeeg label 2026-09-21 20:22:29 +00:00
Author
Owner

⚡ jeeg — preso in carico 2026-09-21T20:22:29Z
ramo: lavoro/jeeg · capacità: docker, gpu, systemd

⚡ jeeg — **preso in carico** 2026-09-21T20:22:29Z ramo: `lavoro/jeeg` · capacità: docker, gpu, systemd
Author
Owner

ANALISI (passo 1) — ramo lavoro/jeeg, worktree ~/lavoro/TieMeasureFlow su jeeg, lotto C1

MODIFICHE: src/backend/services/vision_service.py _call_worker — httpx.TimeoutException (tutte) → 504; httpx.TransportError/httpx.HTTPError restanti (RemoteProtocolError, ReadError, ConnectError…) → 502 con motivo.
TEST: src/backend/tests/test_vision_*.py — AsyncClient.post che solleva RemoteProtocolError → 502; ConnectTimeout → 504. Base: scratchpad/test_probe_backend.py.

ANALISI (passo 1) — ramo `lavoro/jeeg`, worktree `~/lavoro/TieMeasureFlow` su jeeg, lotto C1 MODIFICHE: src/backend/services/vision_service.py `_call_worker` — `httpx.TimeoutException` (tutte) → 504; `httpx.TransportError`/`httpx.HTTPError` restanti (RemoteProtocolError, ReadError, ConnectError…) → 502 con motivo. TEST: src/backend/tests/test_vision_*.py — AsyncClient.post che solleva RemoteProtocolError → 502; ConnectTimeout → 504. Base: scratchpad/test_probe_backend.py.
Author
Owner

Soluzione

ESITO: fatto
COSA: _call_worker: ogni httpx.TimeoutException → 504, ogni altro errore di trasporto → 502 con motivo. Prova originale rilanciata: RemoteProtocolError → HTTPException 502.
COMMIT (ramo lavoro/jeeg, unito su V3.0.0 a d483fa1): 67392a9
PROVA: uv run --extra server --extra client --extra dev pytest -q → 622 passed, 4 skipped (erano 391); visione su Python 3.13 → 16 passed (erano 8).

**Soluzione** ESITO: fatto COSA: `_call_worker`: ogni `httpx.TimeoutException` → 504, ogni altro errore di trasporto → 502 con motivo. Prova originale rilanciata: RemoteProtocolError → HTTPException 502. COMMIT (ramo lavoro/jeeg, unito su V3.0.0 a d483fa1): 67392a9 PROVA: `uv run --extra server --extra client --extra dev pytest -q` → 622 passed, 4 skipped (erano 391); visione su Python 3.13 → 16 passed (erano 8).
Adriano removed the assegnata:jeeg label 2026-09-21 21:56:17 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Adriano/TieMeasureFlow#14