Saving a campaign no longer fails with "Restart read required"

FixEmailService
Shipped
September 12, 2026 at 9:46 PM UTC
Author
Kamo
Commit
fb1e1cc

The bulk-provider row (hosts, send window, warm-ups, campaign audiences) was read inside callers' longer transactions. A campaign save writes the row's audience in a transaction of its own and then, in its own transaction, read the row back to answer: the write lands in YugabyteDB's clock-uncertainty window, the read has to restart, and YugabyteDB can only restart a transaction's first statement by itself — so the save failed every time the "All" boxes changed, and Send with it. Every read of the row now goes through **************** in a short transaction of its own where it is always the first statement.

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