Skip to content

feat(csharp): add VSR framing to the csharp SDK - #3800

Open
lukaszzborek wants to merge 1 commit into
masterfrom
dotnet-vsr
Open

feat(csharp): add VSR framing to the csharp SDK#3800
lukaszzborek wants to merge 1 commit into
masterfrom
dotnet-vsr

Conversation

@lukaszzborek

Copy link
Copy Markdown
Contributor

The .NET SDK only spoke classic TCP framing, so it could not talk to
the clustered next-generation server.

Add runtime-selectable VSR framing via WireProtocol.Vsr, with the
register handshake, 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 85.86957% with 221 lines in your changes missing coverage. Please review.
✅ Project coverage is 76.06%. Comparing base (102484a) to head (e948728).

Files with missing lines Patch % Lines
...IggyClient/Implementations/TcpMessageStream.Vsr.cs 73.51% 109 Missing and 25 partials ⚠️
...SDK/IggyClient/Implementations/TcpMessageStream.cs 85.61% 12 Missing and 9 partials ⚠️
.../Iggy_SDK/Publishers/BackgroundMessageProcessor.cs 24.00% 18 Missing and 1 partial ⚠️
...gn/csharp/Iggy_SDK/Vsr/ConsumerGroupClientState.cs 86.98% 15 Missing and 4 partials ⚠️
foreign/csharp/Iggy_SDK/Utils/ServerAddress.cs 89.47% 2 Missing and 4 partials ⚠️
foreign/csharp/Iggy_SDK/Vsr/VsrOperation.cs 96.09% 2 Missing and 3 partials ⚠️
foreign/csharp/Iggy_SDK/Vsr/LoginRegister.cs 94.59% 2 Missing and 2 partials ⚠️
foreign/csharp/Iggy_SDK/Vsr/VsrHeader.cs 94.91% 2 Missing and 1 partial ⚠️
...DK/Exceptions/VsrRequestOutcomeUnknownException.cs 0.00% 2 Missing ⚠️
foreign/csharp/Iggy_SDK/Consumers/IggyConsumer.cs 50.00% 0 Missing and 1 partial ⚠️
... and 7 more
Additional details and impacted files
@@             Coverage Diff              @@
##             master    #3800      +/-   ##
============================================
+ Coverage     75.96%   76.06%   +0.10%     
  Complexity      969      969              
============================================
  Files          1320     1334      +14     
  Lines        157608   159079    +1471     
  Branches     130990   131248     +258     
============================================
+ Hits         119720   121008    +1288     
- Misses        34297    34345      +48     
- Partials       3591     3726     +135     
Components Coverage Δ
Rust Core 75.96% <ø> (-0.01%) ⬇️
Java SDK 62.71% <ø> (ø)
C# SDK 75.07% <85.86%> (+2.81%) ⬆️
Python SDK 93.10% <ø> (ø)
PHP SDK 84.52% <ø> (ø)
Node SDK 95.30% <ø> (+0.07%) ⬆️
Go SDK 43.08% <ø> (ø)
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 69.29% <100.00%> (-2.50%) ⬇️
...n/csharp/Iggy_SDK/Consumers/IggyConsumerBuilder.cs 74.35% <100.00%> (-5.65%) ⬇️
...gn/csharp/Iggy_SDK/Consumers/IggyConsumerConfig.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 94.28% <100.00%> (-0.72%) ⬇️
...csharp/Iggy_SDK/Publishers/IggyPublisherBuilder.cs 50.24% <100.00%> (+1.53%) ⬆️
.../csharp/Iggy_SDK/Publishers/IggyPublisherConfig.cs 100.00% <100.00%> (ø)
... and 20 more

... and 40 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.

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.

1 participant