Thread-Safety: _jobs-Dict wird ohne Lock aus mehreren Threads geschrieben #6

Closed
opened 2026-04-23 14:14:18 +02:00 by ferdi2go · 1 comment
Owner

Problem\n\nserver.py:218_jobs wird gleichzeitig aus HTTP-Request-Threads (lesen) und Background-Threads (schreiben via .update()) verändert. Zusammengesetzte Operationen sind durch den GIL nicht atomar.\n\n## Fix\n\nEin threading.Lock() um alle _jobs-Schreibzugriffe, oder atomare Dict-Einzel-Assigns statt .update({...}):\npython\n_jobs[job_id]["done"] = i + 1 # atomar\n# statt:\n_jobs[job_id].update({"done": i+1, ...}) # nicht atomar\n

## Problem\n\n`server.py:218` — `_jobs` wird gleichzeitig aus HTTP-Request-Threads (lesen) und Background-Threads (schreiben via `.update()`) verändert. Zusammengesetzte Operationen sind durch den GIL nicht atomar.\n\n## Fix\n\nEin `threading.Lock()` um alle `_jobs`-Schreibzugriffe, oder atomare Dict-Einzel-Assigns statt `.update({...})`:\n```python\n_jobs[job_id]["done"] = i + 1 # atomar\n# statt:\n_jobs[job_id].update({"done": i+1, ...}) # nicht atomar\n```
ferdi2go added the bugpriority: medium labels 2026-04-23 14:14:18 +02:00
Author
Owner

Fixed in commit 69adfe6.

Fixed in commit `69adfe6`.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ferdi2go/OnlyFrames#6