20.10.0 Release Notes

Hayley Campbell  |  16 December 2020

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

gRPC Streams Client

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

 

gRPC Operations Client 

dotnet add package EventStore.Client.Grpc.Operations --version 20.10.0

 

gRPC User Management Client 

dotnet add package EventStore.Client.Grpc.UserManagement --version 20.10.0

 

.NET TCP Client Packages

EventStore TCP Client

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


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.