Event Store Cloud is production-ready and supports AWS, Azure, and GCP - click here to create your account

Event Store blog


Release Notes

21.2.0 TCP Client Release Notes

Hayley Campbell  |  26 March 2021

We are pleased to announce the release of v21.2.0 of the Dotnet TCP Client!

You can get the packages from nuget here: EventStore TCP Client
dotnet add package EventStore.Client --version 21.2.0

Changes

Auto-Compatibility Mode

The upgrade from EventStoreDB v5 to v20 and above will typically require an update to the TCP clients' connection strings. This is mainly due to the fact that the v20 servers are secure by default, whereas the v5 servers are not.

This means that the standard upgrade procedure would require you to update clients and connection strings during the server upgrade. This is a disruptive operation, and we want to make this process easier.

To start with this, we have added an auto compatibility mode for connecting to a cluster with ClusterDNS discovery. This mode determines whether to discover a cluster over secure or insecure HTTP. It also sets the host header appropriately to work around a bug in Mono on v5 servers.

When it's enabled, it will do the following:

  • On the first discovery attempt, it will try both a secure and an insecure request against the server.
  • Whichever request succeeds will set whether gossip is to be done over HTTP or HTTPS.
  • From there, the connection can be used as normal.

It does not affect whether the client should connect using secure or insecure TCP connections, but this is planned for future versions.

To use the auto-compatibility mode, you must be using dns discovery:

  • connection string: “ConnectTo=discover://{address}”
  • ClusterSettings: “DiscoverClusterViaDns()”

And it can be enabled with:

  • connection string: “CompatibilityMode=auto”
  • ConnectionSettings: “SetCompatibilityMode("auto")”

As an example, when connecting to a v5 cluster from a v21.2.0 client:

Connection String:

ConnectTo=discover://{dns_address}:2113;TargetHost={dns_address};UseSslConnection=false;CompatibilityMode=auto;

Connection Settings: var connectionSettings = ConnectionSettings.Create() .SetCompatibilityMode("auto"); var clusterSettings = ClusterSettings.Create() .DiscoverClusterViaDns() .DisableTls() .SetClusterDns({dns_address}) .SetClusterGossipPort(2113);

Thanks to @megakid for the initial work on this feature!

Dotnet TCP Client 21.2.0 Changelog

  • #2796 Introduce compatibility mode

  • #2821 Time out gossip discovery on the TCP client if the task does not complete

  • #2832 ValidateServer also sets whether HTTP certificate validation is enabled

Documentation

Documentation for Dotnet TCP Client can be found here. Documentation for v20.10 and 21.2 of the client will be coming soon!

If you have any questions that aren't covered in these release notes or the docs, please feel free to reach out on discuss, GitHub or slack.

Providing Feedback

If you encounter any issues, please don’t hesitate to open an issue on GitHub if there isn’t one already.

Additionally, there is a fairly active Discuss channel, and an #eventstore channel on the DDD-CQRS-ES Slack community.


Photo of Hayley Campbell

Hayley Campbell Hayley is Engineering Team Lead for Event Store and works in our Netherlands office. She was part of the team back in 2015 and re-joined in 2019. In her spare time she enjoys playing games.