KamoCRM

Indexing a listed page can no longer fail the listing

FixEmailService
Shipped
September 28, 2026 at 12:26 PM UTC
Author
Kamo
Commit
122e43d

recordSyncedPage was @Transactional and caught every exception of its own. The index repositories join the caller's transaction, so a write that met a concurrent one (Yugabyte 40001: a read restart, or the indexer storing the same new message) marked it rollback-only on the way out; the catch could not clear that, and the commit threw UnexpectedRollbackException past it into EmailController.listMessages, which answered 500 with the page of mail already in hand. The rows are now written in a transaction this method opens and ends before its catch, retried on a database conflict by TransientDbRetry. The Redis checkpoint is taken only after that commit: written inside the transaction, a failed commit left it vouching for rows, and flags, that were rolled back. (SP99 T6)

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