Bug: Scoring-Subprocess hat kein Timeout — kann endlos hängen #69

Open
opened 2026-03-30 20:18:32 +00:00 by David · 0 comments
Collaborator

Beschreibung

In backend/services/scoring_engine.py:46-54 wird der Claude CLI Subprocess für LLM-Scoring ohne Timeout gestartet. Wenn der Prozess hängt, blockiert er den Scoring-Worker dauerhaft.

Hintergrund

asyncio.create_subprocess_exec() wird ohne asyncio.wait_for() aufgerufen. Im Gegensatz zum Claude Runner (der CLAUDE_CODE_TIMEOUT_SECONDS nutzt) hat der Scoring-Call kein Zeitlimit.

Akzeptanzkriterien

  • Scoring-Subprocess hat konfigurierbaren Timeout (Default: 120s)
  • Bei Timeout: Prozess wird gekillt, Ticket bekommt Fallback-Score (nur Rule-Score)
  • Warnung im Log bei Timeout
  • Test: Mock-Subprocess der nicht antwortet wird nach Timeout abgebrochen

Technische Hinweise

  • Betroffene Datei: backend/services/scoring_engine.py:46-54
  • Ansatz: asyncio.wait_for(process.communicate(), timeout=scoring_timeout)
  • Neue Config: SCORING_TIMEOUT_SECONDS=120
  • Migration nötig: nein

Aufwand: S

## Beschreibung In `backend/services/scoring_engine.py:46-54` wird der Claude CLI Subprocess für LLM-Scoring ohne Timeout gestartet. Wenn der Prozess hängt, blockiert er den Scoring-Worker dauerhaft. ## Hintergrund `asyncio.create_subprocess_exec()` wird ohne `asyncio.wait_for()` aufgerufen. Im Gegensatz zum Claude Runner (der `CLAUDE_CODE_TIMEOUT_SECONDS` nutzt) hat der Scoring-Call kein Zeitlimit. ## Akzeptanzkriterien - [ ] Scoring-Subprocess hat konfigurierbaren Timeout (Default: 120s) - [ ] Bei Timeout: Prozess wird gekillt, Ticket bekommt Fallback-Score (nur Rule-Score) - [ ] Warnung im Log bei Timeout - [ ] Test: Mock-Subprocess der nicht antwortet wird nach Timeout abgebrochen ## Technische Hinweise - Betroffene Datei: `backend/services/scoring_engine.py:46-54` - Ansatz: `asyncio.wait_for(process.communicate(), timeout=scoring_timeout)` - Neue Config: `SCORING_TIMEOUT_SECONDS=120` - Migration nötig: nein ## Aufwand: S
Sign in to join this conversation.
No description provided.