[Bug] Race condition sur deals_raw.json — écritures concurrentes sans lock #24
Labels
No labels
P0-critical
P1-high
P2-medium
P3-low
UX
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
performance
question
security
tech-debt
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
SlopVibe-org/nutri-food#24
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problème
Plusieurs fonctions font un read-modify-write du fichier
deals_raw.jsonsans aucun verrou :fetch_all_deals_raw()— lancé partrigger_raw_refresh_async()dans un thread daemonadd_to_raw_deals()— appelé par les routes admin/api/admin/food/showremove_from_raw_deals()— appelé par les routes admin/api/admin/food/hideload_raw_deals()— lectureDeux écritures simultanées peuvent corrompre le JSON ou perdre des données.
De plus, la variable globale
DEALS_BUILDINGutilise un pattern check-then-set sans synchronisation (if DEALS_BUILDING: return False...DEALS_BUILDING = True).Fichier
backend/utils/foods_helpers.pyFix
threading.Lockglobal autour de toutes les opérations fichierDEALS_BUILDINGparthreading.Lock(acquire(blocking=False))outhreading.EventSévérité
🔴 Critical — corruption de données possible en production.