A catalog bump emptied the sweep instead of failing it

FixEmailService
Shipped
September 5, 2026 at 7:56 PM UTC
Author
Kamo
Commit
a0a6081

Both reads the sweep depends on already sat inside a catch that logs and carries on, so a Yugabyte conflict never surfaced as an error — it surfaced as a tick that reported "0 mailboxes, 0 messages examined, 0 linked" and looked like a quiet morning. That is the worst shape a failure can take here, because the sweep's own success line is what anyone checks. The retry goes INSIDE the try in both cases, ahead of the swallow: once that catch has run there is no exception left for a retry to recognise. mailboxOwners() is the whole input to the tick, so a conflict there empties the run outright. sweepMember costs one member their tick, and is retried at the call rather than by annotating the method, because sweepAll reaches it by self-invocation — an annotation would have covered the one caller that does not matter and missed the sweep.

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