21.10.1 Release Notes
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.
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:
- Corrected the InvalidOperationException caused by reading RequestStream after completing the PersistentSubscription gRPC call: https://github.com/EventStore/EventStore/pull/3287
- Corrected the handling of persistent subscriptions to the stream name with `@` sign: https://github.com/EventStore/EventStore/pull/3328
- Prevented deadlock risk when creating a persistent subscription group. Introduced option for non-blocking reads from stream buffer with custom handling when stream buffer is unavailable. This enables more precise resolution of the threading issues: https://github.com/EventStore/EventStore/pull/3344
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.