The first release candidate for Event Store 4.0.4 is now available! It is available for the following operating systems:
While there are a number of changes and fixes in this version, the main focus has been on improving indexes.
Loading indexes have a large impact on the startup times of Event Store. This is due to two processes that happen every time Event Store starts :
The improvements in this release focus specifically on these two processes.
Firstly, index verification can now be disabled. This means that the entire index file no longer needs to be read on startup. Some extra checks have instead been added to check for possible corruption of the indexes. If any potential corruption is discovered while running, a file is created to indicate that verification must be run at the next startup. If there is anything wrong, then the indexes will be rebuilt as per usual.
Secondly, midpoints are now written to the footer of new index files. This allows Event Store to load up the midpoints without recalculating them on every run.
These improvements won’t always be immediately apparent. There are some steps required to get the benefits of these changes :
--skip-index-verify
option.This release also changes the way the index is updated with a new write, as well as how events are read from $all.
Previously the index was updated as soon as possible after an event had been written to disk on a node. This means that an event could be added to the index before it has been replicated to other nodes in the cluster. Consequently if a client were to read or subscribe to that stream, it could receive an event that does not yet exist in the entire cluster.
As an example, consider the following scenario :
Because the event was never replicated to any of the other nodes, that event no longer exists. If that event is not retried, then our client may have acted on an event that essentially never happened.
Another common result of the above scenario is the client resubscribing to one of the other nodes, but the position it tries to subscribe from is no longer valid. This causes the subscription to throw errors, and means that the client will need to resubscribe from a known valid position.
If you have experienced issues similar to this, we would value your feedback on this release candidate.
We are still working on improvements for projections and aiming to make them more stable and reliable.
There are two fixes in this RC for projections not starting up correctly, as well as a performance improvement for multi-stream projections. Additionally, the issue where projections may be deleted if they take a few minutes to start up has been fixed.
The alpha packages can be installed using the following instructions.
Ubuntu 14.04/16.04 (via packagecloud)
curl -s https://packagecloud.io/install/repositories/EventStore/EventStore-OSS-PreRelease/script.deb.sh | sudo bash
sudo apt-get install eventstore-oss=4.0.4-rc1
Windows (via Chocolatey)
choco install eventstore-oss -version 4.0.4-rc1 -pre
Client Packages (via Nuget)
Install-Package EventStore.Client -Pre
We appreciate any feedback via either GitHub Issues or forum.