fix(seed): prevent duplicate seeding under multi-worker gunicorn
CI / test (push) Has been cancelled
CI / docker (push) Has been cancelled

When the beta image runs with --workers > 1 (default: 2), every worker
calls lifespan() in parallel. Each worker sees an empty DB, then
seed_if_empty() runs concurrently, producing 2x (or Nx) demo entries.

Fix: wrap the seed operation in a process-wide FileLock. Even if a
worker loses the race it re-checks the table count inside the critical
section and returns without re-seeding.

Verified by cold-starting a 4-worker container: 8 items (was: 32).
This commit is contained in:
ki
2026-07-21 23:40:57 +02:00
parent 0bca2eaaa2
commit ccf90d3e46
2 changed files with 25 additions and 5 deletions
+1
View File
@@ -5,3 +5,4 @@ pydantic==2.9.2
httpx==0.27.2
python-multipart==0.0.10
jinja2==3.1.4
filelock==3.16.1