Impedire la bandiera elaborata con il denaro scrivere, non davanti a esso

FixBillingService
Spegnimento
26 agosto 2026 alle ore 01:59 UTC
Autore
Kamo
Impegno
2945f3d

markProcessed era REQUIRES NEW, quindi ha commesso elaborato=vero mentre il Le scritture di denaro del gestore erano ancora non commesse nel sospeso esterno transazione. JpaTransazioni Manager non getta una persistenza sospesa contesto, così il commit interno è atterrato davanti all'esterno in attesa SQL. A fallimento del commit-phase -- Il vincolo unico di AccountInvoice su stripe invoice id, il suo NON NULL FK sul conto uid, o un ingoiato IllegalArgumentException in SubscriptionMemberService.add avvelenare il condiviso transazione -- poi ha rotolato il denaro scrivere indietro e ha lasciato l'evento segnato fatto. La riprovazione di Stripe l'ha saltata, quindi la scrittura era LOST, e non ha nemmeno raggiunto il query veleno-evento perché elaborato era vero. markProcessed ora aderisce alla transazione esterna, quindi un rollback prende la bandiera con e la riga rimane rivendicata-ma non elaborata, che è ciò Esiste in superficie. rivendicazione e marchio mantenere REQUIRES NEW: il reclamo deve sopravvivere a un rollback o ogni retry sembra prima consegna, e il dettaglio di errore deve sopravvivere al rollback che descrive. Inoltre rafforza tre affermazioni di origine-testo che un sondaggio di mutazione ha sconfitto: il == 0 cancello potrebbe essere invertito a == 1, il reclamo potrebbe essere avvolto in un condizionale mentre l'ordine indice è ancora passato, e la cancellazione del post-interruttore markProcessed call è stato mascherato dal primo-ritorno chiamata sito. Fondata da una recensione a tre obiettivi; 16 dei suoi 23 risultati sono stati confusi.

Tutte le modifiche

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo