KamoCRM

Închideți decalajul de idempotență al webhook-ului BL0

FixBillingService
Shipped
26 august 2026 la 03:33 UTC
Author
Kamo
Commit
27d3200

Găsirea 1 (Critical): o cerere de pierdere doar pe un eveniment cu dungi relivrate s-a dovedit că există un rând, nu că încercarea anterioară s-a încheiat. O revendicare rând lăsat în urmă de un eșec tranzitoriu (Yugabyte 40001, a Hikari timeout, o cursă unic-constrângere) părea identic cu un autentic duplicat, astfel încât relivrarea a răspuns 200 și Stripe permanent N-am mai încercat să scriu bani care n-au aterizat niciodată. Adăugat - Nu. (propria sa REquires NOW citeste) deci o cerere pierduta este judecata daca este procesata de fapt Flipped to true; un rând neprelucrat aruncă acum Nu-ţi face griji. în loc să se întoarcă, Controlerul răspunde la 500 şi fereastra de rejudecare de trei zile a lui Stripe rămâne deschisă. Găsirea 2 (Important): MarkProcessed aruncat numărul de rând. A actualizare zero-rând a fost invizibil și a lăsat evenimentul neprocesat în tăcere Pentru totdeauna, cu nimic care să nu cedeze nicăieri. Acum afirmă exact un rând. a fost actualizat și aruncă altfel; javadoc înregistrează Yugabyte raţionamentul de izolare instantanee care face acest lucru sigur astăzi şi fragil dacă o citire a depozitului este adăugată vreodată înaintea cererii. Găsirea 4 (Minor): controlorul înregistrat absent-Strip-Signature- header caz la ERROR, la fel ca un autentic lipsă-secret Misconfiguration. Acest obiectiv este public și accesibil pe internet, astfel încât orice apelant ar putea genera linii ERROR la cerere omiţând header. WebhookNotConfigurat Excepție poartă acum un steag apelantCaused; jurnalele de control WARN pentru header caz și rezervă EROR pentru cazul care este de fapt al nostru pentru a remedia. Teste: fixat ambele direcții ale noii porți de cerere comportamental (StripeWebhookClaimGateTest, cu o sarcină utilă reală HMAC) și prin intermediul forma sursei (StripeWebhookIdemancyTest); marcaProcessed În cazul în care nu se aplică articolul 4 alineatul (1) litera (a) punctul (ii) din Regulamentul (UE) nr. ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** divizat comportamental prin intermediul unei Logback ListAppender Nu-ţi face griji. Verificat toate trei sunt purtător de sarcină prin întoarcerea fiecărui fix la rândul său, confirmând noi teste corespunzătoare merge roșu, apoi restaurarea și confirmarea verde. Apartament complet: 208 teste, 0 eșecuri, 0 erori (până la 193 la 674fa0f).

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing