Skip to content

v1.0.42 - #110

Merged
yilmaztayfun merged 2 commits into
release-v1.0from
master
Sep 23, 2026
Merged

yilmaztayfun merged 2 commits into
release-v1.0from
master

Conversation

@yilmaztayfun

Copy link
Copy Markdown
Contributor

No description provided.

yilmaztayfun and others added 2 commits September 23, 2026 22:41
…CKED

With several replicas, every worker's cleanup read the same oldest processed
rows without a lock and removed them via RemoveRange. The first commit won and
the rest failed with DbUpdateConcurrencyException ("expected to affect 1 row(s),
but actually affected 0"), logged at Error on every pod. On the outbox side the
exception also escaped to RunAsync, which returned 0 and pushed polling into
idle backoff right after publishing.

- Add IInboxCleanupStore / IOutboxCleanupStore. The Npgsql implementations run
  a single DELETE ... FOR UPDATE SKIP LOCKED, so workers delete disjoint
  batches without waiting or failing. The EF Core fallbacks (TryAdd) use a
  set-based ExecuteDelete that never raises a concurrency error.
- Honour CleanupInterval (it was documented but never read) and add it plus
  CleanupBatchSize to the outbox options. A full batch keeps cleanup due so a
  backlog still drains; a short batch or a failure defers by the interval.
- Wrap outbox cleanup in its own try/catch so it cannot discard the publish count.
- Mark IInboxStore.CleanupOldMessagesAsync [Obsolete]; Aether no longer calls it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…p-locked

fix(events): delete expired inbox/outbox rows with FOR UPDATE SKIP LOCKED
@yilmaztayfun yilmaztayfun self-assigned this Sep 23, 2026
@yilmaztayfun
yilmaztayfun requested review from a team September 23, 2026 19:48
@coderabbitai

coderabbitai Bot commented Sep 23, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 465f7b8e-a1ab-4de9-aa85-817d966bae2f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@yilmaztayfun
yilmaztayfun merged commit 6fc6a34 into release-v1.0 Sep 23, 2026
3 of 4 checks passed
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant