Skip to content

feat(csharp): migrate to VSR wire protocol - #3800

Open
lukaszzborek wants to merge 14 commits into
masterfrom
dotnet-vsr
Open

feat(csharp): migrate to VSR wire protocol#3800
lukaszzborek wants to merge 14 commits into
masterfrom
dotnet-vsr

Conversation

@lukaszzborek

@lukaszzborek lukaszzborek commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

The .NET SDK previously spoke classic TCP framing, which the clustered
next-generation server does not understand. Classic framing is now
dropped entirely: the SDK speaks VSR framing only, so every connection
goes through the register handshake, with session lifetime tied to the
connection, request sequencing, bounded reply decoding, transient
replays, leader redirection over the cluster roster, and
assignment-based consumer groups.

The IIggyClient surface is unchanged. Partitioning moves client-side
(balanced and message-key, hash byte-compatible with the Rust SDK),
credentials are bounds-checked before framing, and a request written
without a server verdict surfaces as VsrRequestOutcomeUnknownException
rather than being silently replayed on a new session, since that would
bypass server-side deduplication.

@github-actions github-actions Bot added the S-waiting-on-review PR is waiting on a reviewer label Aug 2, 2026
@codecov

codecov Bot commented Aug 2, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 72.70064% with 466 lines in your changes missing coverage. Please review.
✅ Project coverage is 75.51%. Comparing base (c272f21) to head (e427d88).

Files with missing lines Patch % Lines
...IggyClient/Implementations/TcpMessageStream.Vsr.cs 59.84% 171 Missing and 33 partials ⚠️
...SDK/IggyClient/Implementations/TcpMessageStream.cs 60.28% 49 Missing and 7 partials ⚠️
...lient/Implementations/TransientHttpRetryHandler.cs 5.55% 51 Missing ⚠️
...DK/IggyClient/Implementations/HttpMessageStream.cs 2.08% 47 Missing ⚠️
foreign/csharp/Iggy_SDK/Vsr/VsrOperation.cs 75.78% 28 Missing and 3 partials ⚠️
...gn/csharp/Iggy_SDK/Vsr/ConsumerGroupClientState.cs 86.30% 15 Missing and 5 partials ⚠️
.../Iggy_SDK/Publishers/BackgroundMessageProcessor.cs 24.00% 18 Missing and 1 partial ⚠️
...oreign/csharp/Iggy_SDK/Publishers/IggyPublisher.cs 0.00% 11 Missing and 1 partial ⚠️
foreign/csharp/Iggy_SDK/Utils/ServerAddress.cs 89.47% 2 Missing and 4 partials ⚠️
foreign/csharp/Iggy_SDK/Vsr/LoginRegister.cs 94.59% 2 Missing and 2 partials ⚠️
... and 10 more
Additional details and impacted files
@@             Coverage Diff              @@
##             master    #3800      +/-   ##
============================================
- Coverage     76.58%   75.51%   -1.07%     
  Complexity     1046     1046              
============================================
  Files          1347     1363      +16     
  Lines        171013   172476    +1463     
  Branches     142367   142615     +248     
============================================
- Hits         130966   130250     -716     
- Misses        36225    38388    +2163     
- Partials       3822     3838      +16     
Components Coverage Δ
Rust Core 75.76% <ø> (-0.02%) ⬇️
Java SDK 63.67% <ø> (ø)
C# SDK 50.16% <72.70%> (-22.12%) ⬇️
Python SDK 88.70% <ø> (ø)
PHP SDK 82.97% <ø> (ø)
Node SDK 96.37% <ø> (+0.09%) ⬆️
Go SDK 69.18% <ø> (ø)
Files with missing lines Coverage Δ
...csharp/Iggy_SDK/Configuration/AutoLoginSettings.cs 100.00% <100.00%> (ø)
...p/Iggy_SDK/Configuration/IggyClientConfigurator.cs 100.00% <100.00%> (ø)
...n/csharp/Iggy_SDK/Consumers/IggyConsumer.Rented.cs 61.40% <100.00%> (-10.40%) ⬇️
...n/csharp/Iggy_SDK/Consumers/IggyConsumerBuilder.cs 50.33% <100.00%> (-29.67%) ⬇️
.../csharp/Iggy_SDK/Contracts/SendMessagesResponse.cs 100.00% <100.00%> (ø)
...y_SDK/Exceptions/IggyInvalidStatusCodeException.cs 100.00% <100.00%> (ø)
.../Iggy_SDK/Exceptions/VsrSessionEvictedException.cs 100.00% <100.00%> (ø)
...reign/csharp/Iggy_SDK/Factory/IggyClientFactory.cs 92.59% <100.00%> (-2.41%) ⬇️
foreign/csharp/Iggy_SDK/Mappers/BinaryMapper.cs 69.41% <100.00%> (-23.79%) ⬇️
...ign/csharp/Iggy_SDK/Publishers/IggyPublisherOfT.cs 100.00% <100.00%> (ø)
... and 23 more

... and 77 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

numinnex
numinnex previously approved these changes Aug 6, 2026
spetz
spetz previously approved these changes Aug 7, 2026
@hubcio

hubcio commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

please remove e2e-vsr and make e2e use iggy-server-ng - we're dropping support for iggy-server.

@lukaszzborek
lukaszzborek dismissed stale reviews from spetz and numinnex via e79cf53 August 7, 2026 18:46
# Conflicts:
#	.github/workflows/_test_bdd.yml
#	.github/workflows/_test_examples.yml
#	bdd/docker-compose.vsr.yml
#	scripts/run-bdd-tests.sh
@lukaszzborek lukaszzborek changed the title feat(csharp): add VSR framing to the csharp SDK feat(csharp): migrate to VSR wire protocol Aug 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-review PR is waiting on a reviewer

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants