Fix preserving messages for stateful reconnect with backplane #60900
+246
−11
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #55575
Changed
MessageBuffer.WriteAsync
methods to use the hub message type since that's the only information we're using in the method. And updated theSerializedHubMessage
usage to assume we're sending aHubInvocationMessage
since that's the only message type we currently use withSerializedHubMessage
.Updated tests:
src/SignalR/server/SignalR/test/Microsoft.AspNetCore.SignalR.Tests/Internal/MessageBufferTests.cs
: Added a regression test to ensure unacknowledged serialized messages are resent on reconnect.src/SignalR/server/StackExchangeRedis/test/RedisEndToEnd.cs
: Added a new E2E stateful reconnect test to verify that messages are preserved during reconnects and introduced aWebSocketWrapper
class to simulate ungraceful closures. [1] [2] [3]