This is an automated email from the ASF dual-hosted git repository.

mmodzelewski pushed a commit to branch java-vsr
in repository https://gitbox.apache.org/repos/asf/iggy.git

commit f2c2df995ec2b0fbff8ad4f47b00ff7e05bdded8
Merge: fc0d5cfa7 7ff58de25
Author: Maciej Modzelewski <[email protected]>
AuthorDate: Mon Aug 10 10:12:19 2026 +0200

    Merge branch 'master' into java-vsr

 .github/actions/csharp-dotnet/pre-merge/action.yml |  21 +-
 .github/workflows/_test_bdd.yml                    |  12 +-
 .github/workflows/_test_examples.yml               |  10 +-
 .github/workflows/coverage-baseline.yml            |  17 +-
 bdd/README.md                                      |   8 +-
 foreign/csharp/Directory.Packages.props            |   1 +
 .../ClusterRedirectionTests.cs                     |  27 +-
 .../ConsumerGroupTests.cs                          |  11 +-
 .../FetchMessagesTests.cs                          |  34 +-
 .../Fixtures/IggyClusterFixture.cs                 | 250 ------
 .../Fixtures/IggyServerFixture.cs                  | 256 +++---
 .../Fixtures/IggyTlsServerFixture.cs               |   7 +-
 .../Fixtures/RedirectionClusterFixture.cs}         |  17 +-
 .../Fixtures/VsrCluster.cs                         | 438 +++++++++
 .../FlushMessagesTests.cs                          |  61 +-
 .../HeaderEncryptionIntegrationTests.cs            |  74 +-
 .../Helpers/Eventually.cs                          |  43 +
 .../IggyConsumerTests.cs                           |  94 +-
 .../IggyPublisherTests.cs                          |  93 +-
 .../IggyTlsConnectionTests.cs                      |  10 +-
 .../IggyTypedConsumerTests.cs                      |  20 +-
 .../IggyTypedPublisherTests.cs                     |   8 +-
 .../MessageEncryptionIntegrationTests.cs           |   4 +-
 .../Iggy_SDK.Tests.Integration/OffsetTests.cs      |  27 +-
 .../Iggy_SDK.Tests.Integration/PartitionsTests.cs  |   6 +-
 .../PersonalAccessTokenTests.cs                    |   2 +-
 .../Iggy_SDK.Tests.Integration/RawCommandTests.cs  |  12 +-
 .../Iggy_SDK.Tests.Integration/SegmentsTests.cs    |  12 +-
 .../SendMessagesTests.cs                           | 143 ++-
 .../Iggy_SDK.Tests.Integration/StreamsTests.cs     |   5 +-
 .../Iggy_SDK.Tests.Integration/SystemTests.cs      |  12 +-
 .../Iggy_SDK.Tests.Integration/TopicsTests.cs      |  37 +-
 .../Iggy_SDK.Tests.Integration/UsersTests.cs       |  16 +-
 .../Vsr/VsrConsumerGroupTests.cs                   | 228 +++++
 .../Vsr/VsrHandshakeTests.cs                       | 165 ++++
 .../Vsr/VsrMessagingTests.cs                       | 165 ++++
 .../Vsr/VsrMetadataTests.cs                        | 132 +++
 .../Iggy_SDK/Configuration/AutoLoginSettings.cs    |  15 +
 .../Configuration/IggyClientConfigurator.cs        |   6 +
 .../Iggy_SDK/Consumers/IggyConsumer.Rented.cs      |   8 +-
 foreign/csharp/Iggy_SDK/Consumers/IggyConsumer.cs  |  10 +-
 .../Iggy_SDK/Consumers/IggyConsumerBuilder.cs      |   5 +-
 .../Iggy_SDK/Consumers/IggyConsumerBuilderOfT.cs   |  10 +-
 .../Iggy_SDK/Contracts/SendMessagesResponse.cs     |  77 ++
 .../Exceptions/IggyInvalidStatusCodeException.cs   |  12 +-
 .../VsrRequestOutcomeUnknownException.cs           |  33 +
 ...eException.cs => VsrSessionEvictedException.cs} |  22 +-
 .../csharp/Iggy_SDK/Factory/IggyClientFactory.cs   |  17 +-
 .../csharp/Iggy_SDK/IggyClient/IIggyPublisher.cs   |  25 +-
 foreign/csharp/Iggy_SDK/IggyClient/IIggySystem.cs  |   5 +-
 .../Implementations/HttpMessageStream.cs           | 100 ++-
 .../Implementations/TcpMessageStream.Vsr.cs        | 978 +++++++++++++++++++++
 .../IggyClient/Implementations/TcpMessageStream.cs | 499 +++++------
 .../Implementations/TransientHttpRetryHandler.cs   | 109 +++
 foreign/csharp/Iggy_SDK/Iggy_SDK.csproj            |   3 +-
 foreign/csharp/Iggy_SDK/Mappers/BinaryMapper.cs    |  65 +-
 .../Publishers/BackgroundMessageProcessor.cs       |  43 +-
 .../csharp/Iggy_SDK/Publishers/IggyPublisher.cs    |  51 +-
 .../Iggy_SDK/Publishers/IggyPublisherBuilder.cs    |   3 +-
 .../Iggy_SDK/Publishers/IggyPublisherBuilderOfT.cs |   9 +-
 .../csharp/Iggy_SDK/Publishers/IggyPublisherOfT.cs |  35 +-
 foreign/csharp/Iggy_SDK/Utils/BufferSizes.cs       |   1 -
 foreign/csharp/Iggy_SDK/Utils/CommandCodes.cs      |   3 +
 foreign/csharp/Iggy_SDK/Utils/ServerAddress.cs     | 139 +++
 .../{Utils/BufferSizes.cs => Vsr/Command2.cs}      |  14 +-
 foreign/csharp/Iggy_SDK/Vsr/ConsensusSession.cs    | 223 +++++
 .../Iggy_SDK/Vsr/ConsumerGroupClientState.cs       | 301 +++++++
 foreign/csharp/Iggy_SDK/Vsr/CredentialBounds.cs    |  66 ++
 .../AutoLoginSettings.cs => Vsr/EvictionReason.cs} |  37 +-
 foreign/csharp/Iggy_SDK/Vsr/LoginRegister.cs       | 168 ++++
 foreign/csharp/Iggy_SDK/Vsr/SyncConsumerGroup.cs   |  61 ++
 foreign/csharp/Iggy_SDK/Vsr/VsrError.cs            |  61 ++
 foreign/csharp/Iggy_SDK/Vsr/VsrHeader.cs           | 156 ++++
 foreign/csharp/Iggy_SDK/Vsr/VsrNamespace.cs        | 251 ++++++
 foreign/csharp/Iggy_SDK/Vsr/VsrOperation.cs        | 275 ++++++
 foreign/csharp/Iggy_SDK/Vsr/VsrReplyDecoder.cs     | 206 +++++
 .../ClientTests/IggyClientFactoryTests.cs          |  67 ++
 .../ConsumerTests/IggyConsumerBuilderTests.cs      |  19 +
 .../Iggy_SDK_Tests/MapperTests/BinaryMapper.cs     |  76 ++
 .../PublisherTests/IggyPublisherBuilderTests.cs    |  47 +
 .../PublisherTests/IggyTypedPublisherTests.cs      |   4 +-
 .../Iggy_SDK_Tests/UtilityTests/SendUnitTests.cs   |   7 +-
 .../VsrTests/ConsensusSessionTests.cs              | 218 +++++
 .../VsrTests/ConsumerGroupClientStateTests.cs      | 176 ++++
 .../VsrTests/CredentialBoundsTests.cs              |  72 ++
 .../Iggy_SDK_Tests/VsrTests/LoginRegisterTests.cs  | 165 ++++
 .../Iggy_SDK_Tests/VsrTests/ServerAddressTests.cs  |  85 ++
 .../VsrTests/SyncConsumerGroupTests.cs             |  93 ++
 .../Iggy_SDK_Tests/VsrTests/VsrHeaderTests.cs      | 292 ++++++
 .../Iggy_SDK_Tests/VsrTests/VsrNamespaceTests.cs   | 282 ++++++
 .../Iggy_SDK_Tests/VsrTests/VsrOperationTests.cs   | 167 ++++
 .../VsrTests/VsrProtocolDriftTests.cs              | 849 ++++++++++++++++++
 .../VsrTests/VsrReplyDecoderTests.cs               | 293 ++++++
 .../Iggy_SDK_Tests/VsrTests/VsrTestPayloads.cs     | 102 +++
 foreign/csharp/README.md                           | 106 ++-
 scripts/run-bdd-tests.sh                           |   6 +-
 scripts/run-examples-from-readme.sh                |   7 +-
 97 files changed, 8520 insertions(+), 1193 deletions(-)

diff --cc .github/workflows/_test_bdd.yml
index 8d8358f04,a423a7502..811b6b6e6
--- a/.github/workflows/_test_bdd.yml
+++ b/.github/workflows/_test_bdd.yml
@@@ -53,11 -53,11 +53,11 @@@ jobs
          run: |
            # The VSR lanes need the vsr feature on both the server and the CLI,
            # otherwise the CLI cannot frame requests for the VSR wire protocol
--          # and the healthcheck ping fails. The Go SDK speaks only VSR and the
-           # Python wheels and the Java SDK are vsr-built, so those suites are
 -          # Python wheels and the .NET SDK are vsr-built, so those suites are
--          # always on this branch.
++          # and the healthcheck ping fails. The Go SDK speaks only VSR, while
++          # the Python wheels, Java SDK, and .NET SDK are vsr-built, so those
++          # suites are always on this branch.
            case "${{ inputs.task }}" in
-           bdd-rust-vsr|bdd-go|bdd-go-race|bdd-python|bdd-node-vsr|bdd-java)
 -          bdd-rust-vsr|bdd-go|bdd-go-race|bdd-python|bdd-node-vsr|bdd-csharp)
++          
bdd-rust-vsr|bdd-go|bdd-go-race|bdd-python|bdd-node-vsr|bdd-csharp|bdd-java)
              # TODO: change to iggy-server once legacy server is removed 
(core/server has VSR support)
              SERVER_BIN="iggy-server-ng"
              echo "Building the VSR server binary and CLI (--features vsr) for 
BDD tests..."
@@@ -91,8 -91,8 +91,8 @@@
          if: startsWith(inputs.component, 'bdd-') && startsWith(inputs.task, 
'bdd-')
          run: |
            # Extract SDK name from task (format: bdd-<sdk>, or bdd-<sdk>-vsr
-           # for an explicit vsr lane). Python and Java have no legacy
 -          # for an explicit vsr lane). Python and C# have no legacy lane, so
 -          # their plain task names run vsr.
++          # for an explicit vsr lane). Python, C#, and Java have no legacy
 +          # lane, so their plain task names run vsr.
            SDK_NAME=$(echo "${{ inputs.task }}" | sed 's/^bdd-//; s/-vsr$//')
            EXTRA_FLAGS=()
            case "${{ inputs.task }}" in
diff --cc .github/workflows/_test_examples.yml
index aa9a87734,4387c3a45..9d3e3de9d
--- a/.github/workflows/_test_examples.yml
+++ b/.github/workflows/_test_examples.yml
@@@ -113,11 -113,11 +113,11 @@@ jobs
            echo "Building common binaries for all examples tests..."
            echo "Current directory: $(pwd)"
  
--          # The Go SDK speaks only the VSR wire protocol and the Python wheels
-           # and the Java SDK are vsr-built, so those lanes need the VSR 
server.
 -          # and the .NET SDK are vsr-built, so those lanes need the VSR 
server.
--          # Every other language still runs against the legacy one until its
--          # own migration lands.
-           if [[ "${{ inputs.task }}" == "examples-go" || "${{ inputs.task }}" 
== "examples-python" || "${{ inputs.task }}" == "examples-java" ]]; then
 -          if [[ "${{ inputs.task }}" == "examples-go" || "${{ inputs.task }}" 
== "examples-python" || "${{ inputs.task }}" == "examples-csharp" ]]; then
++          # The Go SDK speaks only the VSR wire protocol, while the Python
++          # wheels, Java SDK, and .NET SDK are vsr-built, so those lanes need
++          # the VSR server. Every other language still runs against the legacy
++          # one until its own migration lands.
++          if [[ "${{ inputs.task }}" == "examples-go" || "${{ inputs.task }}" 
== "examples-python" || "${{ inputs.task }}" == "examples-csharp" || "${{ 
inputs.task }}" == "examples-java" ]]; then
              # TODO: change to iggy-server once legacy server is removed 
(core/server has VSR support)
              SERVER_BIN="iggy-server-ng"
              echo "Building ${SERVER_BIN} (--features vsr)..."
diff --cc bdd/README.md
index b231d9008,46ee69f17..e28db3533
--- a/bdd/README.md
+++ b/bdd/README.md
@@@ -39,7 -39,7 +39,7 @@@ bdd
  ├── docker-compose.server.yml   # Single iggy-server test setup
  ├── docker-compose.cluster.yml  # Leader + follower test setup
  ├── docker-compose.coverage.yml # Coverage collection overlay
- ├── docker-compose.vsr.yml      # server-ng (VSR) overlay (Rust opt-in, Java 
always)
 -├── docker-compose.vsr.yml      # server-ng (VSR) overlay (rust, python, 
csharp)
++├── docker-compose.vsr.yml      # server-ng (VSR) overlay
  ├── Dockerfile                  # Debug build of Iggy server
  └── README.md
  ```
@@@ -71,15 -71,16 +71,17 @@@
  # Run only leader_redirection
  ../scripts/run-bdd-tests.sh all leader_redirection
  
- # Run against iggy-server-ng with VSR (opt-in for Rust via --vsr; the
- # Java suite always uses the VSR overlay). Build the vsr binaries first:
 -# Run against iggy-server-ng with VSR (Rust, Python, and C# SDKs; the
 -# other SDKs do not speak the VSR wire protocol yet). Python and C# are
 -# vsr-built, so their plain lanes above already run vsr in CI.
 -# Build the vsr binaries first:
++# Run against iggy-server-ng with VSR. Go and Java always use the VSR
++# overlay. Python and C# are vsr-built, so CI supplies --vsr for their
++# plain lanes. Rust and Node opt in with --vsr. Build the binaries first:
  #   cargo build --bin iggy-server-ng --bin iggy --features vsr
  # NOTE: `target/debug/iggy` is shared between lanes and the vsr flavour
  # speaks a different wire protocol. When switching back to the legacy
  # lane, rebuild without `--features vsr` first, or the in-container
  # healthcheck ping cannot talk to the legacy server.
  ../scripts/run-bdd-tests.sh --vsr rust
++../scripts/run-bdd-tests.sh --vsr csharp
 +../scripts/run-bdd-tests.sh java
  
  # Clean up Docker resources
  ../scripts/run-bdd-tests.sh clean
diff --cc scripts/run-bdd-tests.sh
index 6e5d30298,ce2ffdc5b..c95de1cb4
--- a/scripts/run-bdd-tests.sh
+++ b/scripts/run-bdd-tests.sh
@@@ -56,12 -55,9 +56,12 @@@ usage()
  
  if [ "$VSR" = "1" ]; then
    case "$SDK" in
-     rust|python|go|go-race|node|clean) ;;
+     rust|python|go|go-race|node|csharp|clean) ;;
 +    java)
 +      # Redundant: the Java suite applies the VSR overlay unconditionally.
 +      VSR=0 ;;
      *)
-       log "❌ --vsr supports only the Rust, Python, Go, Node, and Java SDKs so 
far"
 -      log "❌ --vsr supports only the Rust, Python, Go, Node, and C# SDKs so 
far"
++      log "❌ --vsr supports only the Rust, Python, Go, Node, C#, and Java 
SDKs so far"
        usage
        exit 2 ;;
    esac

Reply via email to