Rendre l'import idempotent et sûr sous concurrence #7
Labels
No labels
area: auth
area: deps
area: frontend
area: gameplay
area: import
area: infra
area: product
area: tests
priority: P0
priority: P1
priority: P2
priority: P3
type: bug
type: chore
type: feature
type: infrastructure
type: performance
type: security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: thibaud-lclr/ltbxd-actorle#7
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?
1. Le souci
L'import asynchrone découpe les films en batchs et peut traiter plusieurs messages en parallèle. Aujourd'hui, la déduplication repose surtout sur des vérifications applicatives (
findOneBy,count) sans contraintes uniques alignées en base.Conséquences possibles :
movie,actor,movie_role,award_type,award;2. Proposition de solution
Rendre le pipeline explicitement idempotent et robuste aux courses concurrentes.
Pistes :
count()de présence comme seul garde-fou.3. Proposition d'implémentation
Schéma
movie.ltbxd_refen unique ;actor.tmdb_iden unique ;movie_role(actor_id, movie_id)en unique ;award_type.nameen unique ;award(actor_id, name, year)en unique ou via hash métier.Code
FilmImporter,ActorSynceretAwardImporter, remplacer les pré-checks fragiles par une logiquefind-or-createtolérante aux collisions ;UniqueConstraintViolationExceptionpuis recharger l'entité créée par un autre worker ;Validation
Impact