fix(api): remount nicht-blockierend (Netz-Mount darf API-Start nicht haengen)
Ampel / ampel (push) Successful in 28s
Ampel / ampel (push) Successful in 28s
Vorfall 24.07.: Beim API-Start blockierte der synchrone CIFS-Schreibtest in alle_remounten()/mounten() im Kernel (wait_for_response), als der SMB-Server langsam war -> ~5 min "Waiting for application startup", kein Endpoint bedient (bis der soft-Mount per Timeout abbrach). startup_event() lief isoliert sauber, also war es der blockierende Netz-Mount, nicht die App-Logik. Fix: remount als Hintergrund-Task (asyncio.create_task) statt await -> die API kommt sofort hoch, die Mounts stellen sich her sobald der Server antwortet. Test (test_api_smoke.py): haelt den Nicht-blockierend-Vertrag per Quelltext- Inspektion fest, im Stil der anderen Verdrahtungs-Tests. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -42,3 +42,18 @@ def test_worker_task_name_passt_zum_celery_client():
|
||||
|
||||
quelle = inspect.getsource(celery_client.start_rip)
|
||||
assert '"worker.tasks.rip_disc"' in quelle
|
||||
|
||||
|
||||
def test_remount_blockiert_den_api_start_nicht():
|
||||
"""Regression (Vorfall 24.07.): ein haengender Netz-Mount (CIFS-Schreibtest kann
|
||||
im Kernel haengen, wait_for_response) darf den API-Start NICHT blockieren. remount
|
||||
muss als Hintergrund-Task laufen (create_task), nicht direkt awaited werden."""
|
||||
import inspect
|
||||
|
||||
import main
|
||||
|
||||
quelle = inspect.getsource(main.startup_event)
|
||||
assert "create_task(asyncio.to_thread(remount))" in quelle, \
|
||||
"remount muss als Hintergrund-Task laufen (nicht blockierend)"
|
||||
assert "await asyncio.to_thread(remount)" not in quelle, \
|
||||
"remount darf nicht mehr direkt awaited werden (blockiert sonst den Start)"
|
||||
|
||||
Reference in New Issue
Block a user