Skip to content

[release/10.2] Fix deadlock in ServiceEndpointWatcher when disposing change token registration#7258

Merged
joperezr merged 1 commit intorelease/10.2from
backport/pr-7255-to-release/10.2
Feb 3, 2026
Merged

[release/10.2] Fix deadlock in ServiceEndpointWatcher when disposing change token registration#7258
joperezr merged 1 commit intorelease/10.2from
backport/pr-7255-to-release/10.2

Conversation

@github-actions
Copy link
Contributor

@github-actions github-actions bot commented Feb 3, 2026

Backport of #7255 to release/10.2

/cc @ReubenBond

Customer Impact

Testing

Risk

IMPORTANT: If this backport is for a servicing release, please verify that:

  • The PR target branch is release/X.0-staging, not release/X.0.

  • If the change touches code that ships in a NuGet package, you have added the necessary package authoring and gotten it explicitly reviewed.

Microsoft Reviewers: Open in CodeFlow

…gistration

Move _changeTokenRegistration.Dispose() outside the lock to avoid deadlock.
CancellationTokenRegistration.Dispose() blocks waiting for any in-flight
callback to complete, but the callback (RefreshAsync) tries to acquire
the same lock, causing a deadlock.

The fix captures the registration reference while holding the lock, then
disposes it after releasing the lock. Applied to both RefreshAsyncInternal
and DisposeAsync methods.
@joperezr joperezr enabled auto-merge (squash) February 3, 2026 22:47
@joperezr joperezr merged commit e118f1c into release/10.2 Feb 3, 2026
6 checks passed
@joperezr joperezr deleted the backport/pr-7255-to-release/10.2 branch February 3, 2026 23:25
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.

2 participants