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```
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem\n\n
server.py:218—_jobswird 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\nEinthreading.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\nFixed in commit
69adfe6.