Skip to content

Release trigger session on concurrency conflicts and cancellation - #220

Merged
koenbeuk merged 3 commits into
masterfrom
fix/219-release-trigger-session
Oct 4, 2026
Merged

koenbeuk merged 3 commits into
masterfrom
fix/219-release-trigger-session

Conversation

@koenbeuk

@koenbeuk koenbeuk commented Oct 3, 2026

Copy link
Copy Markdown
Collaborator

fixes #219

Copilot AI balanced review requested due to automatic review settings October 3, 2026 23:59

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Concurrency cleanup occurs before the final interception outcome, breaking suppressed and re-entrant failure paths.

Review effort: Balanced
Findings: 1 High severity

Open (1)
What changed in this PR

Fixes trigger-session leaks after concurrency conflicts and canceled saves, especially for pooled contexts.

Changes:

  • Handles concurrency and cancellation interceptor callbacks.
  • Resets interceptor state between context-pool leases.
  • Adds lifecycle and pooling regression tests.
File Description
TriggerSessionSaveChangesInterceptorReleaseTests.cs Tests session release paths.
ServiceCollectionExtensionsTests.cs Tests trigger-instance reuse across leases.
TriggerSessionSaveChangesInterceptor.cs Adds failure, cancellation, and reset handling.
TriggerInstanceFactory.cs Restores supplied trigger instances after reset.
TriggersOptionExtension.cs Registers interceptor reset support.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@koenbeuk
koenbeuk merged commit f941ab9 into master Oct 4, 2026
6 checks passed
@koenbeuk
koenbeuk deleted the fix/219-release-trigger-session branch October 4, 2026 00:24
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.

Pooled DbContext: trigger session stays enlisted after DbUpdateConcurrencyException or a cancelled SaveChanges, async BeforeSave triggers stop firing

2 participants