We are pleased to announce the release of EventStoreDB 5.0.10!
This release includes some stability backports from version 21.2.
It is available for the following operating systems:
Downloads are available on our website.The packages can be installed using the following instructions.
Ubuntu 16.04/18.04 (via packagecloud)curl -s https://packagecloud.io/install/repositories/EventStore/EventStore-OSS/script.deb.sh | sudo bash sudo apt-get install eventstore-oss=5.0.10-1
Windows (via Chocolatey)
choco install eventstore-oss -version 5.0.10
.NET TCP Client PackagesEventStore TCP Client
dotnet add package EventStore.Client --version 5.0.10
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:
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:
“ConnectTo=discover://{address}”
“DiscoverClusterViaDns()”
And it can be enabled with:
“CompatibilityMode=auto”
“SetCompatibilityMode("auto")”
As an example, when connecting to a v20 or higher cluster from a v5.0.10 client:
Connection String:
ConnectTo=discover://{dns_address}:2113;TargetHost={dns_address};UseSslConnection=true;CompatibilityMode=auto;
Connection Settings:var connectionSettings = ConnectionSettings.Create() .SetCompatibilityMode("auto"); var clusterSettings = ClusterSettings.Create() .DiscoverClusterViaDns() .UseSslConnection({dns_address}, true) .SetClusterDns({dns_address}) .SetClusterGossipPort(2113);
Thanks to @megakid for the initial work on this feature!
One of the improvements backported from 21.2.0 was the heartbeat timeout improvements. In a scenario where one side of a connection to Event Store is sending a lot of data and the other side is idle, a false-positive heartbeat timeout can occur for the following reasons:
In this release, we have extended the heartbeat logic by proactively scheduling a heartbeat request from the receiver to the sender to prevent the heartbeat timeout. This should lower the number of incorrect heartbeat timeouts that occur on busy clusters.
Please see the documentation for more information about heartbeats and how they work.
The Read Index Cache Capacity option which was released in 21.2.0 has been backported to this release. Event Store caches the metadata for streams that have been read recently to improve read and write performance.
While the default capacity of 100,000 should be enough for most situations, there are cases where it can be beneficial to increase the cache capacity. For example, if you’re going to be performing a lot of reads and writes to the same 200,000 streams for a period of time.
We’ve added the “StreamInfoCacheCapacity” option to allow tuning this cache. Please be aware that increasing this number will cause EventStoreDB to use more memory.
#2761 Expose option for Stream info cache capacity
#2791 Cluster stability fixes
#2827 Compatibility mode (thanks to @megakid for the contribution!)
#2829 Allow 50 logical TB of log size
#2836 Fix a TCP regression
Documentation for EventStoreDB can be found here.
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.
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.