21.10.2 Release Notes

Hayley Campbell  |  08 March 2022

We are pleased to announce the official release of EventStoreDB OSS & Commercial version 21.10.2 long term support (LTS). This is a patch release that contains important fixes and changes made after the 21.10.1 LTS release.

This LTS release will continue to be supported until October 2023. Read more about our versioning strategy here.

The complete changelog can be found here. If you need help planning your upgrade or want to discuss support, please contact us here.

 EventStoreDB 21.10.2 is available for the following operating systems:

  • Windows Server 2016 and above
  • 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.2

Windows (via Chocolatey)

choco install eventstore-oss -version 20.10.2

Docker (via docker hub)

docker pull eventstore/eventstore:21.10.2-focal

or

docker pull eventstore/eventstore:21.10.2-buster-slim

Highlights for this Release

Faster Startup Times on Large Databases

When EventStoreDB upgraded to NET5.0 in v20.10.2 and v21.10.0, a performance regression in Directory.EnumerateFiles made a performance issue in the EventStoreDB code more obvious, which greatly affected startup and truncation times on large databases.

We have reduced the computational complexity of the methods run at startup to lower the impact of the regression and improve startup times. If you were experiencing slow startups on version 21.10.0 then we highly recommend that you upgrade to this version.

Improved Stream Existence Filter flushes

There was a small chance that a flush of the stream existence filter could delay writes by several seconds. This would cause timeouts and other disruptions for clients.

This may be ZFS-specific and possibly related to the reason we recently switched away from memory mapped checkpoints on ZFS.

In this version, we have changed the persistent bloom filters to use file streams as opposed to memory mapped files, avoiding the problem if it is ZFS related, and allowing us to control the rate of flushing and ensure it does not impact disk operations.

Send the Full Intermediate Certificate Chain

According to RFC 5246 regarding the TLS protocol, intermediate certificates should be sent from both the server and client sides when present. We have updated the server to send the full certificate chain (except the root certificate) to be compliant with this RFC.

Please note that as of this version, you should install any intermediate certificates on the EventStoreDB nodes. If the certificate is not present at startup, the node will log the warning “For correct functioning and optimal performance, please add your intermediate certificates to the current user's 'Intermediate Certification Authorities' certificate store.”

You may also see performance issues when establishing connections if the certificate is not in the store, as the node will have to download the certificate.

For instructions on setting up intermediate certificates for EventStoreDB, please refer to the docs.

Projections Subsystem Fix

This version includes a fix for the projections subsystem that makes it more resilient to read timeouts. Previously, the projection subsystem could get stuck in a “Stopping” state when a projection read had previously timed out. In that case, the only way to restore the projection functionality was to restart the affected node entirely.

Read timeouts should no longer prevent the subsystem from stopping, and we have added more logging around timeouts in projections so that these issues are easier to debug.

User Management Fix

We have made password resets more robust and fixed a bug that could cause requests to fail with the “Unauthorized” status even when the details were correct.

When a user's password is changed, a race condition made it possible for previous versions of EventStoreDB to continue accepting the old password and not accepting the new password until the node was restarted.

This has been fixed on version 21.10.2, but if you cannot update to this version then we recommend that you test the new password after changing a user’s password, and ensure it has been updated correctly. If the new password is not accepted, then restart the node and try on a different Leader node.

Upgrade Procedure

To upgrade a cluster from 20.10.x or 21.10.x, a 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.
  • Wait for the node to join the cluster as a follower.

There is no way to perform a rolling upgrade between version 5.x and version 21.10.2 due to changes in the replication protocols and the way nodes gossip and host elections.

As such, the upgrade process from 5.x is as follows:

  • Take down the cluster
  • Perform an in-place upgrade of the nodes, ensuring that the relevant configuration and certificates are set up
  • Bring the nodes back online and wait for them to stabilise

Documentation

Documentation for EventStoreDB can be foundhere.

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.