Skip to content

Remove evicted queued publishes from session recovery tracking - #2269

Open
YAJeff wants to merge 1 commit into
dotnet:masterfrom
YAJeff:fix/evicted-publish-tracking
Open

YAJeff wants to merge 1 commit into
dotnet:masterfrom
YAJeff:fix/evicted-publish-tracking

Conversation

@YAJeff

@YAJeff YAJeff commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

With DropOldest, an evicted queued QoS1/2 publish remains in unacknowledged tracking. Even after its replacement is acknowledged, session recovery can enqueue the old publish again. Remove the exact evicted publish object from tracking when it is removed from the data queue. Actual in-flight exchanges remain tracked.

Six regression cases cover QoS0/1/2, with and without an in-flight exchange, replacement acknowledgement and two recoveries. Against unchanged master, four QoS1/2 cases fail as expected and both QoS0 controls pass. With the correction, all 14 selected tests pass on Windows .NET 8, Windows .NET 10 and Linux .NET 10. Identifier allocation and exhaustion behavior are unchanged.

This branch has not been deployed

No deployments
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