20.10.0 Release Notes
We are pleased to announce the official release of EventStoreDB 20.10.0 LTS!
It is available for the following operating systems:
- Windows
- Ubuntu 16.04
- Ubuntu 18.04
- Ubuntu 20.04
- CentOS 7 (Commercial version)
- Amazon Linux 2 (Commercial version)
- Oracle Linux 7 (Commercial version)
Where Can I Get the Packages?
Downloads are available on our website.
The packages can be installed using the following instructions.
Ubuntu 16.04/18.04/20.04 (via packagecloud)
curl -s https://packagecloud.io/install/repositories/EventStore/EventStore-OSS/script.deb.sh | sudo bash
sudo apt-get install eventstore-oss=20.10.0
Windows (via Chocolatey)
choco install eventstore-oss -version 20.10.0
.NET gRPC Client Packages
dotnet add package EventStore.Client.Grpc.Streams --version 20.10.0
gRPC Projection Management Client
dotnet add package EventStore.Client.Grpc.ProjectionManagement --version 20.10.0
gRPC Persistent Subscriptions Client
dotnet add package EventStore.Client.Grpc.PersistentSubscriptions --version 20.10.0
dotnet add package EventStore.Client.Grpc.Operations --version 20.10.0
dotnet add package EventStore.Client.Grpc.UserManagement --version 20.10.0
.NET TCP Client Packages
dotnet add package EventStore.Client --version 20.10.0
Upgrade Procedure
To upgrade a cluster from 20.6.x, a usual rolling upgrade can be done:
- Pick a node (Start with follower nodes first, then choose the leader last)
- Stop the node, upgrade it and start it
If you are upgrading a cluster from version 5.x and below, please read the upgrade procedure in the 20.6.0 release notes. https://eventstore.com/blog/event-store-20.6.0-release/
Known Issue with Packagecloud Upgrades
There is a known issue with upgrading to version 20.6.1 and 20.10.x using packagecloud caused by the 20.6.0 uninstall script. This issue was found in the first 20.6.1 script so may affect some people who pulled the package before we updated it. This issue causes the upgrade to fail, meaning that the service won’t start up and the eventstored
command will not be available.
To fix this, please manually uninstall the current version of EventStoreDB before installing the 20.10.0 package.
Setting Up EventStoreDB
Running a Cluster with Docker Compose
We’ve added a Docker Compose file to EventStoreDB to make running a secure cluster quick and easy.
To start up a cluster, simply run docker-compose up
. This will bring up a 3 node cluster bound to the following endpoints:
Node |
TCP EndPoint |
HTTP EndPoint |
Node1 |
localhost:1111 |
localhost:2111 |
Node2 |
localhost:1112 |
localhost:2112 |
Node3 |
localhost:1113 |
localhost:2113 |
Browse to https://localhost:2111 to open the admin UI for the first node.
Using gRPC, you can connect to the cluster with the following:
var settings = EventStoreClientSettings.Create(
"esdb://localhost:2111,localhost:2112,localhost:2113?tlsVerifyCert=false");
var client = new EventStoreClient(settings);
Using TCP, you can then connect to the cluster with the following:
var connectionString =
"GossipSeeds=https://localhost:2111,https://localhost:2112,https://localhost:2113;" +
"CustomHttpMessageHandler=SkipCertificateValidation;" +
"ValidateServer=false";
var connection = EventStoreConnection.Create(connectionString);
await connection.ConnectAsync();
Configuring a cluster to run with certificates
We’ve added a tool to help with creating certificates for an EventStoreDB cluster. You can find the tool and usage instructions here.
Once you have the certificates generated, you will need to configure your nodes to use them. You can do this by adding the following configuration to any existing configuration:
TrustedRootCertificatesPath: {Path to CA Directory}
CertificateFile: {Path to Certificate File}
CertificatePrivateKeyFile: {Path to Private Key File}
Insecure Mode
We have introduced an Insecure mode for those who wish to run EventStoreDB without security or certificates.
Insecure mode disables all authentication, authorization and transport security for the node and any clients connected to it.
This option can be enabled with the Insecure
flag.
Changes
This release does not add many new features, instead it is focussed around hardening the 20.6.1 release for LTS.
Improved memory usage for Index Merges
As EventStoreDB databases get larger, the amount of memory used for operations such as index merges increases. This is particularly evident when the index cache depth has been set to a high value.
We have updated the index merge process to release memory as early as possible during a merge, and to prevent MemTables from piling up during large index merges during full index rebuilds.
Use .NET channels for gRPC reads
gRPC reads now use .NET channels internally. This makes subscriptions and reads more reliable and fixes a few issues that were reported with subscriptions.
gRPC Clients
There has been a lot of interest about the other gRPC clients we are working on, which has prompted us to open the following client repos:
.NET - https://github.com/EventStore/EventStore-Client-Dotnet
NodeJs - https://github.com/EventStore/EventStore-Client-NodeJS
Java - https://github.com/EventStore/EventStoreDB-Client-Java
Golang - https://github.com/EventStore/EventStore-Client-Go
Rust - https://github.com/EventStore/EventStoreDB-Client-Rust
Feedback on these clients and on the ones to come are greatly appreciated. Please see the places to provide feedback at the end of these release notes.
Documentation
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.
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