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.
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
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.
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 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.
If you encounter any issues, please don’t hesitate to open an issue on GitHub if there isn’t one already.