21.10.1 Release Notes

Oskar Dudycz  |  23 December 2021

We are pleased to announce the official release of EventStoreDB OSS & Commercial version 21.10.1 long-term support (LTS). This is a patch release that contains important fixes and changes made after the 21.10.0 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.1 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 also be installed using the following instructions.

Ubuntu 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=21.10.1

Windows (via Chocolatey)

choco install eventstore-oss -version 21.10.1

Docker (via docker hub)


docker pull eventstore/eventstore:21.10.1-focal
docker pull eventstore/eventstore:21.10.1-buster-slim

Highlights for this Release

Performance improvements

In one of the previous versions, we decided to use memory-mapped checkpoints on Linux. We have decided to reverse this decision, as they may cause occasional pauses on the ZFS file system. From now on we'll use file checkpoints on Linux and memory-mapped checkpoints on Windows.

In 21.10.0 we improved the reading performance of streams with a lot of events that have expired due to max age stream metadata. This now also obeys the SkipIndexScanOnRead configuration setting. See: https://github.com/EventStore/EventStore/pull/3339.

Batch append for gRPC clients (introduced in the previous release) has brought significant performance improvements. We ensured that proper status is returned with the fix in https://github.com/EventStore/EventStore/pull/3295.

Strengthened server startup

We fixed threading issues during the database startup. In the edge case (e.g. long-running custom projections), it may cause the leader failure. We ensured that exceptions in scheduled messages won’t crash the server and that IODispatcher is thread-safe for request tracking. See details in: https://github.com/EventStore/EventStore/pull/3270.

We added logging for the following processes during the database startup:

  • Scanning the log backwards for an epoch,
  • Checking for chunk overlaps and removing old versions of chunks.
Extended logging should provide more insights and diagnostics if one of those operations takes longer.

ARM64 processors support

The main work for supporting the ARM64 build on Linux is finished. In previous releases, we introduced experimental support for the ARM64 processors. It is an essential step for Linux users and MacBook M1, as it enables proper Docker usage. We’re still running the final QA, so official support will come soon. Until that, you can either use the image from our GitHub Docker registry:

docker pull ghcr.io/eventstore/eventstore:21.10.1-alpha-arm64v8

or clone database repository and run the build:

docker build -t local/eventstoredb --build-arg RUNTIME=linux-arm64

Subscriptions improvements

We fixed a set of smaller issues related to Persistent Subscriptions handling:

We introduced new capabilities to gRPC endpoint definition to enable future persistent subscription management features through gRCP clients (GetInfo, ReplayParked, List, RestartSubsystem, ConsumerStrategy). See: https://github.com/EventStore/EventStore/pull/3352.

We added a fix for catch-up subscriptions to use the last indexed position of the $all stream when a consumer subscribes to a filtered subscription from the end: https://github.com/EventStore/EventStore/pull/3342.

User-defined projections improvements

We added a set of fixes for the projection handling, making it possible to return a number value while using partitionBy selector. Now it should be either a string, number, or a not defined value. See more: https://github.com/EventStore/EventStore/pull/3325.

Upgrade Procedure

To upgrade a cluster from 20.10.x or 21.10.0, 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.

There is no way to perform a rolling upgrade between version 5.x and version 21.10.1 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 stabilize

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 Oskar Dudycz

Oskar Dudycz Oskar continues to champion Event Store. His focus is on helping to create applications closer to business needs. He believes that Event Sourcing, CQRS, and Event-Driven Design are enablers to achieving that. Oskar is an Open Source contributor, and co-maintainer of Marten Library and always focuses on practical, hands-on development experience. You can check Oskar's blog event-driven.io and follow him on LinkedIn


https://event-driven.io