Release Notes

20.10.2 LTS Release Notes

Hayley Campbell  |  26 March 2021

We are pleased to announce the official release of EventStoreDB 20.10.2! EventStoreDB 20.10 is an LTS release, so it will continue to receive fixes and updates until October 2022.

It is available for the following operating systems:

  • Windows
  • 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 18.04/20.04 (via packagecloud)
curl -s | sudo bash
sudo apt-get install eventstore-oss=20.10.2
Windows (via Chocolatey)
choco install eventstore-oss -version 20.10.2

Upgrade procedure

To upgrade a cluster from 20.10.0, 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.


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:

  • The heartbeat request may need to wait behind a lot of other data on the send queue on the sender’s side or on the receive queue on the receiver’s side before it can be processed.
  • The receiver does not schedule any heartbeat request to the sender as it assumes that the connection is alive.
  • The sender’s heartbeat request can eventually take more time than the heartbeat timeout to reach the receiver and be processed causing a false-positive heartbeat timeout to occur.

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.

Content Type Validation for Projections

We want to make sure that projections are predictable. To support coming changes, we have added content type validation for projections. This means the following:

  • If the event is a json event, then it must have valid non-null json data.
  • If the event is not a json event, then it may have null data.
  • Null metadata is accepted in any scenario.

Events that don’t meet these requirements will be filtered out without erroring the projection.

This change only takes effect either when a projection is created on v20.10.2 or v21.2.0, or if a projection is stopped and started again. Projections that were created before the upgrade will not enforce content validation.

Read Index Cache Capacity

We’ve introduced a new option to allow customizing the Read Index cache capacity. 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.

Move to .NET 5.0

We have updated Event Store’s internal dependencies to .NET 5.0.

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.