EventStoreDB 20.6.1 Release

Hayley Campbell  |  09 October 2020

We are pleased to announce the official release of EventStoreDB 20.6.1!

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.6.1-2

Windows (via Chocolatey)

choco install eventstore-oss -version 20.6.1

.NET gRPC Client Packages

gRPC Streams Client

dotnet add package EventStore.Client.Grpc.Streams –version 20.6.1

gRPC Projection Management Client

dotnet add package EventStore.Client.Grpc.ProjectionManagement –version 20.6.1

gRPC Persistent Subscriptions Client

dotnet add package EventStore.Client.Grpc.PersistentSubscriptions –version 20.6.1

gRPC Operations Client

dotnet add package EventStore.Client.Grpc.Operations –version 20.6.1

gRPC User Management Client

dotnet add package EventStore.Client.Grpc.UserManagement –version 20.6.1

.NET TCP Client Packages

EventStore TCP Client

dotnet add package EventStore.Client –version 20.6.1

Upgrade Procedure

To upgrade a cluster from 20.6.0, a usual rolling upgrade can be done:

  • Pick a node (Start with slave nodes first, then choose the master 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.

Known Issue with Packagecloud Upgrades

There is a known issue with upgrading to version 20.6.1 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.6.1-2 debian 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. Check it out in the documentation.

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.

Breaking Changes

Dev Mode Removed

Dev mode didn’t make sense following the introduction of a dedicated Insecure mode.

Due to this and the fact that Dev mode should not have been used in production, we made the decision to remove Dev mode entirely.

If you were using Dev mode to avoid setting up certificates, please run EventStoreDB in Insecure mode instead. If you are wanting to run EventStoreDB with certificates, please see the steps outlined above.

Default Cluster Gossip Port

The cluster gossip port was previously set to 30777 by default as this was the default gossip port used by Manager nodes.

Since EventStoreDB 20.6 does not use manager nodes, keeping the port set to this value made no sense. As such, the default cluster gossip port is now the default HTTP port for a node, 2113.

Embedded TCP Client

The Embedded TCP client is not a part of the 20.6.1 release. There are some known issues with the client in this version, specifically around running in a clustered setup.

Main Headline Features

The following are just some of the changes introduced in this version.

For a full list of changes and fixes, please see the changelog.

Custom Client Certificate Common Name

The client certificate common name (CN) that is used to secure a cluster was previously hardcoded to eventstoredb-node.

This meant that public CAs could not be used to generate a certificate for the cluster.

Now, the client certificate CN can be set with the CertificateReservedNodeCommonName option.

Reloading Certificates

Certificates can be reloaded by triggering the /admin/reloadconfig endpoint, or by sending a SIGHUP signal on Linux systems.

The process for rolling the certificates on a cluster is as follows:

  1. Update the certificates on each node one by one. Update the config file if required (e.g if certificate file names/password/paths have changed)
  2. Send a POST request to the /admin/reloadconfig endpoint, or a SIGHUP signal to the EventStoreDB process.

For more information about this change, please see the instructions in the pull request.

Reloading Log Levels

It’s sometimes useful to update the log levels to be more verbose while debugging issues with EventStoreDB. Previously, this required a restart of the server which could cause the issue to stop presenting itself.

An endpoint has been added to allow reloading the log level from configuration while EventStoreDB is running.

To make use of this, update the LogLevel option in the config file, and then send a POST request to the /admin/reloadconfig endpoint, or send a SIGHUP signal if on Linux.

Restart Persistent Subscriptions

Persistent subscriptions can sometimes run into issues that require them to be restarted. Previously, you’d need to restart the leader node to fix the issue, which is disruptive to the cluster.

The 20.6.1 version provides the ability to restart the persistent subscriptions service without affecting the leader node. This can be done either by sending a POST request to the /subscriptions/restart HTTP endpoint, or through the persistent subscriptions gRPC client.

New 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:

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

We are still working hard on improving our documentation. A preview of what’s to come can be found here.

Documentation for EventStoreDB 20.6.x is part of this effort and 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.