-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
expose IAsyncEnumerable on ChannelMessageQueue #2402
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
NickCraver
reviewed
Mar 15, 2023
NickCraver
approved these changes
Mar 15, 2023
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changes look good, just needs a quick API doc relocate!
mgravell
added a commit
that referenced
this pull request
Aug 10, 2023
…-centric - introduce `Resp2Type` and `Resp3Type` shims (`Resp2Type` has reduced types) - mark existing `Type` as `[Obsolete]`, and proxy to `Resp2Type` for compat - deal with null handling differences - deal with `Boolean`, which works very differently (`t`/`f` instead of `1`/`0`) remove RedisResult.Type from Shipped.txt - handle RESP3 types - handle [+|-]{inf|nan} - avoid alloc when parsing doubles made the RedisResult constructor non-public (fix accidental API) remove RawResult.Type; fix broken loop format incorrect attribute check - nomenclature: MultiBulk => Array - efficiency: use bit-packing to RESP2 type conversion is a bit mask fix RawResult.HasValue fix null array return (EmptyMultiBulk is no longer helpful) add a ToString to Replica (other bits were local test setup issues) simplify switch in TryParseDouble - protocol configuration parsing - avoid inbuilt equality/comparison operations on Version - rules for when to try resp3 configuration documentation words fix ConfigurationOptions.Clone actually connect via RESP3 demand redis6 in the RESP3 connect test remove unnecessary directives Lua results more tests and tweaks to fix tests simplify handshake fallback connect move SETNAME back into HELLO message; add lots of documentation about *why* DEBUG PROTOCOL tests; some failures to look at fix protocol tests add missing "hide me" attribs add docs and release notes tyop redundant re-enable to get server-maintenance notifications - ConnectWithBrokenHello is inconclusive if not a v6 server - allow non-RESP3 tests on non-v6 servers "DEBUG PROTOCOL" tests are inconclusive on non-v6 fix TryConnect (CLIENT ID) not always available save all counting is hard expose IAsyncEnumerable on ChannelMessageQueue (#2402) * expose IAsyncEnumerable on ChannelMessageQueue fix #2400 * PR number * move ChannelMessageQueue.GetAsyncEnumerator to shipped LUA conversions version Lua RESP conversions true/false handling depends on setresp(3) revert "if" split in ResultProcessor use enum for RedisProtocol reinstate parameterless RedisResult .ctor fix resp 2/3 inversion snafu from enumification fix resp dependent connection reuse issue add failing Execute test re RESP2 vs RESP3 delta ValuePairInterleavedProcessorBase should auto-handle responses that have become jagged in RESP3 pattern match is easier to read here - move IsResp3; that is a PhysicalConnection thing, not a ServerEndPoint thing - allow RawResult to know whether it is RESP3; involved moving some flags (which removes a bit hack we were using, so: yay) - make the interleave un-jaggedify only apply on RESP3 add more RESP3 API change tests compensate for XREAD having a different shape in RESP3 disable implicit RESP3 based on target server version
mgravell
added a commit
that referenced
this pull request
Aug 10, 2023
…-centric - introduce `Resp2Type` and `Resp3Type` shims (`Resp2Type` has reduced types) - mark existing `Type` as `[Obsolete]`, and proxy to `Resp2Type` for compat - deal with null handling differences - deal with `Boolean`, which works very differently (`t`/`f` instead of `1`/`0`) remove RedisResult.Type from Shipped.txt - handle RESP3 types - handle [+|-]{inf|nan} - avoid alloc when parsing doubles made the RedisResult constructor non-public (fix accidental API) remove RawResult.Type; fix broken loop format incorrect attribute check - nomenclature: MultiBulk => Array - efficiency: use bit-packing to RESP2 type conversion is a bit mask fix RawResult.HasValue fix null array return (EmptyMultiBulk is no longer helpful) add a ToString to Replica (other bits were local test setup issues) simplify switch in TryParseDouble - protocol configuration parsing - avoid inbuilt equality/comparison operations on Version - rules for when to try resp3 configuration documentation words fix ConfigurationOptions.Clone actually connect via RESP3 demand redis6 in the RESP3 connect test remove unnecessary directives Lua results more tests and tweaks to fix tests simplify handshake fallback connect move SETNAME back into HELLO message; add lots of documentation about *why* DEBUG PROTOCOL tests; some failures to look at fix protocol tests add missing "hide me" attribs add docs and release notes tyop redundant re-enable to get server-maintenance notifications - ConnectWithBrokenHello is inconclusive if not a v6 server - allow non-RESP3 tests on non-v6 servers "DEBUG PROTOCOL" tests are inconclusive on non-v6 fix TryConnect (CLIENT ID) not always available save all counting is hard expose IAsyncEnumerable on ChannelMessageQueue (#2402) * expose IAsyncEnumerable on ChannelMessageQueue fix #2400 * PR number * move ChannelMessageQueue.GetAsyncEnumerator to shipped LUA conversions version Lua RESP conversions true/false handling depends on setresp(3) revert "if" split in ResultProcessor use enum for RedisProtocol reinstate parameterless RedisResult .ctor fix resp 2/3 inversion snafu from enumification fix resp dependent connection reuse issue add failing Execute test re RESP2 vs RESP3 delta ValuePairInterleavedProcessorBase should auto-handle responses that have become jagged in RESP3 pattern match is easier to read here - move IsResp3; that is a PhysicalConnection thing, not a ServerEndPoint thing - allow RawResult to know whether it is RESP3; involved moving some flags (which removes a bit hack we were using, so: yay) - make the interleave un-jaggedify only apply on RESP3 add more RESP3 API change tests compensate for XREAD having a different shape in RESP3 disable implicit RESP3 based on target server version # Conflicts: # docs/Configuration.md # docs/ReleaseNotes.md # src/StackExchange.Redis/ConfigurationOptions.cs # src/StackExchange.Redis/ConnectionMultiplexer.cs # src/StackExchange.Redis/Interfaces/IConnectionMultiplexer.cs # src/StackExchange.Redis/ServerEndPoint.cs # tests/StackExchange.Redis.Tests/PubSubTests.cs # tests/StackExchange.Redis.Tests/TestBase.cs
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
fix #2400
note in particular that we create the queue with multi-reader mode, so there are no unusual concurrency concerns here