EventStoreDB 20.6 Release Candidate

Pieter Germishuys  |  12 May 2020

We are pleased to announce the release candidate of EventStoreDB 20.6, which contains mainly bug fixes and improvements on the previous release

This release is not intended to be used in production, we welcome your feedback as we prepare for final release.

If you encounter any issues, please don’t hesitate to open an issue on GitHub if there isn’t one already or head over to our community forum to start a discussion.

You can download the packages from the downloads page under the Pre-Release section.

If you are running on macOS, you will need to run Event Store in Docker, since currently servers using .NET Core’s gRPC implementation require the platform to support server ALPN, which macOS did not until Catalina. As soon as this restriction is lifted by the .NET Core platform, Event Store will release packages for macOS.

Important!

Please note Event Store will only expose the HTTP interface over HTTPS.

This requires a TLS certificate, but for ease of use you can use the development mode which uses a self signed certificate intended for development use only. The development mode can be activated by specifying the --dev option when starting Event Store.

Notable changes and improvements from Event Store Preview 3 to the Release Candidate

  • New versioning strategy
  • Core Database
  • Event Store gRPC Client
  • Embedded Event Store Client

New versioning strategy

As of the release candidate, we will be moving to a new versioning scheme in the form of YY.[M]M version. You can read more about our new versioning strategy here.

Core database

Max truncation safety feature

Thanks to James Connor for this pull request that added a feature to avoid large unexpected truncations by adding a MaxTruncation value that will stop any truncations over that size. This can be set via the following command-line argument, and can be disabled by setting it to -1.

--max-truncation=-1

The default is 1 chunk of data.

Security configuration changes

As we move to Event Store being “secure by default”, there are a number of changes being made to the configuration options. If you have been testing Event Store in development mode then this shouldn’t affect you. If not, you will need to update your configuration to include a TrustedRootCertificatesPath. Details about this can be found here. EventStore#2335

Protocol changes

Please note that if you are developing a client, there have been breaking changes in the protocol from preview 3 release of Event Store.

Appends will now return a response which currently is either a Success or a WrongExpectedVersion.

Stream Reads will now return a response which currently is either a Success or a StreamNotFound.

Combined internal and external http interfaces

We have combined the internal and external http interfaces and therefor the previous configuration options of ExtHttpPort and IntHttpPort has been combined into HttpPort and IntHttpPortAdvertiseAs and ExtHttpPortAdvertiseAs into HttpPortAdvertiseAs.

Event Store gRPC Client

Replace byte arrays with ReadOnlyMemory in the gRPC client

Thanks to Martin Othamar for this pull request to help reduce allocations.

Client has been broken up into operational scopes

The Event Store .NET gRPC Client has also been broken up into a client for each operational scope. The clients can be found as individual nuget packages namely,

EventStore.Client.Grpc.Streams, EventStore.Client.Grpc.Operations, EventStore.Client.Grpc.ProjectionManagement, EventStore.Client.Grpc.UserManagement, EventStore.Client.Grpc.PersistentSubscriptions.

Embedded TCP Client

The embedded TCP client will still be released in version 20.6.0, but was not released as part of the release candidate due to an issue with dependencies.


Photo of Pieter Germishuys

Pieter Germishuys Pieter is a developer at Event Store and works in our Netherlands office. He originally joined Event Store in early 2014 and came back in late 2019. He brings a strong customer-focused approach to building reliable software. Outside of work, Pieter is an avid pc gamer and spends the days he isn't playing games learning new programming languages, technologies and techniques.