fix(admin): chemin d'echec PIN atomique (pin.failed + throttle dans 1 transaction) #30
No reviewers
Labels
No labels
auto-merge
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: AcadeNice/corentin_wakdo#30
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/pin-failure-atomicity"
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?
Finding LOW (audit 2026-06-16, critique de completude)
Sur un PIN invalide,
ProductControllerecrivait la traceaudit_logpin.failed(autocommit) PUIS appelaitPinThrottle::recordFailure(qui ouvrait sa propre transaction) : deux ecritures non atomiques. Un crash entre les deux laisse un etat partiel (trace sans increment, ou l'inverse), en tension avec le claim RG-T08 (audit dans la meme transaction que l'effet, tenu sur le chemin de succes).Correctif
PinThrottle::recordFailureWithin($db, ...)extrait (memes effets : upsert atomique + backoff, sans ouvrir de transaction).recordFailure()reste l'API autonome qui l'enveloppe (contrat public + tests inchanges).ProductController::update/destroy: les chemins d'echec PIN enveloppentlogFailedPin($db, ...)+recordFailureWithin($db, ...)dans une transaction.logFailedPinprend le$dbde la transaction.Verification
PinThrottleDbTest2/2 contre la vraie MariaDB (user en moindre privilege) : SQL refactore OK end-to-end.Pas de label auto-merge.