- Ya
- 25 Agosti 2026, 22:28 UTC
- Mwandishi
- Kamo
- Ahadi ya
- 7fcf1d3
Adds BillingWebhookEventClaimService on its own bean, with REQUIRES_NEW on every method, and wires it into processEvent ahead of the dispatch switch. A losing claim returns without dispatching, so Stripe's redelivery of a money event does nothing rather than writing twice. The claim goes through an injected bean, never this.claim(...): a self-invocation bypasses the Spring proxy and silently voids REQUIRES_NEW, so a handler rollback would roll the claim away and make every retry look like a first delivery. CommissionService already shipped that bug once. The account key falls back to the non-null PLATFORM sentinel, because a NULL component in a unique key conflicts with nothing in Postgres and would silently disable dedupe for exactly the events this endpoint receives today. Also stamps the dunning clock with **************** the bare now() read the pod's default zone while every other timestamp in the file is built at UTC. Squashed from two commits: the bean-only commit failed BillingWebhookClaimShapeTest in isolation, since the field wiring landed in the second. Nothing was pushed.