KamoCRM

A provisioning race Yugabyte reports as a serialization conflict no longer 500s the calendar widget (SP98 T26)

FixEmailService
Shipped
October 5, 2026 at 5:01 PM UTC
Author
Kamo
Commit
425f241

listCalendars provisions the shared and the personal calendar find-then-create, each in its own transaction, and treated a lost race as done only when it surfaced as a unique violation. On Yugabyte the losing write can instead fail with 40001 ("could not serialize access due to concurrent update"): Loki shows three such 500s on CalendarWidgetController.events in a week (2026-10-01 23:27:31Z on both pods at once, 2026-10-02 03:51:58Z), from the launchpad's two widgets loading together. A ConcurrencyFailureException now takes the step once more, in a new transaction whose find sees the winner's row; a second conflict is logged and left for the next load, and the listing still answers. Tests: **************** +2 (RED: CannotAcquireLockException escaped listCalendars).

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