Rerun a webhook event whose first attempt died, and refuse one the SDK cannot read

FixBillingService
Shipped
September 10, 2026 at 8:37 PM UTC
Author
Kamo
Commit
721071b

A losing claim on an unprocessed row always answered 500, so an event whose first attempt failed (a unique-constraint race inside the invoice.created/finalized/paid trio, a transient DB error, a failure at commit) could never run again: every redelivery lost the claim for the whole three-day retry window. **************** reports an unprocessed row whose attempt recorded a failure, or has been unfinished for over two minutes, and that redelivery now dispatches it. A row still inside the window keeps answering 500. stripe-java 28.2.0 only deserializes bodies from its pinned release train (2024-12-18.acacia). The live endpoint renders 2026-03-25.dahlia, so each event it delivers deserializes to no object and would be closed out as processed with nothing done. A handled event type with no deserializable object now throws (500, processing_error recorded); unhandled types are still closed out. HANDLED_EVENT_TYPES names the dispatched types, pinned to the switch's case labels by a test, as the enabled_events for the Stripe endpoint.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing