All notable changes to this project will be documented in this file.
- HTTP read requests to
/streams/$scavenges/
are done via AdminController. #2310 /streams/$scavenges/{scavengeId}/
now maps to/streams/$scavenges-{scavengeId}/
. #2310- Start View Change Proof Timer on System Initialized only. #2366
- Replace byte[] with ReadOnlyMemory to reduce allocations. #2308
- Don't write $ProjectionDeleted events for queries when they're deleted EventStore#2377
- Prepared the authorization interfaces for plugin extraction EventStore#2385
- Remove unused code from MiniNode used in tests EventStore#2401
- Correct the xml documentation for the TCP Client settings builders. EventStore#2393
- Removed the constraint in AlreadyCommitted for Log Position to be positive. EventStore#2404
- Set the default for the write timeout EventStore#2410
- Replaced
UseCustomHttpClient
in the ConnectionSettingsBuilder for the TCP client withUseCustomHttpMessageHandler
EventStore#2419 - Ensure that the leader is still in a leader state when gossip has changed. If not, start elections. EventStore#2418
- Allow a projection to be able to checkpoint regardless of whether the event filter passes. EventStore#2428
- Authorization and Authentication plugin interfaces have been removed and re-included as a nuget package from EventStore.Plugins EventStore#2409
- Authentication Provider Factory now takes a Serilog ILogger EventStore#2409
- Make read-only replicas independent of elections service and use gossip updates to determine leader changes. EventStore#2427
- Send the last replication checkpoint when a node subscribes to the leader EventStore#2445
- License information EventStore#2439
- Unused HTTP messages. #2362
- Removed better ordering option. #2368
- Application Defines EventStore#2441
- Force option EventStore#2442
- Supports for pull request linting and automatic changelog update EventStore#2391
- The following options have been added
AuthorizationType
andAuthorizationConfig
to mirror that of the existingAuthenticationType
andAuthenticationConfig
. EventStore#2385 - A mandatory configuration parameter named:
TrustedRootCertificatesPath
. The certificate store will be expanded with the root certificates in this path before certificate validation. For server certificate validation, trust is restricted to system certificates + the specified root certificates but for client certificate validation, trust is restricted only to the specified root certificates. Before this change, all root certificates installed on the system were trusted. EventStore#2335 - Client certificate validation to the internal HTTP interface which is used for gossip/elections EventStore#2335
- Discover an existing leader through gossip updates when a read-only replica starts up instead of triggering elections. EventStore#2417
- Login endpoint (admin/login) EventStore#2409
- Features collection on the info endpoint EventStore#2409
- Operations proto contract and implementation EventStore#2446
- Max Truncation Safety Feature to avoid large unexpected truncations due to misconfiguration EventStore#2436
- New route in PersistentSubscriptionController to view parked messages /subscriptions/viewparkedmessages/{stream}/{group} EventStore#2392
- A new project
EventStore.NETCore.Compatibility
which takes the code forSystem.UriTemplate
from .NET Framework 4.8 reference source (MIT-licensed) instead of depending onSimpleSyndicate.UriTemplate
(no license) EventStore#2439
With the terminology changes we made, the class names have been changed but we just missed renaming the files. [EventStore#2383](https
- //github.com/EventStore/pull/2383)
Fix bug introduced by f87b317b78248638aba18a6173e63b809ece5d66 [EventStore#2406](https
- //github.com/EventStore/pull/2406)
- Use TrySetResult instead of SetResult so that exceptions are not thrown if setting result twice [EventStore#2406](https
- //github.com/EventStore/pull/2406)
- Connect to existing master when a node starts up instead of triggering unnecessary elections if a quorum of nodes is already present. EventStore#2386
- Add server certificate validation when follower forwards requests over leader's external HTTP. EventStore#2408
- Fix ArgumentNullException in ByCorrelationId standard projection when the event's metadata is null. EventStore#2430
- WhatIf option will now terminate the application if set. EventStore#2432
- No longer raise an exception when reading a linked event with a bad payload. EventStore#2424
- In the TCP client, prevent the first operation from taking a huge amount of time in some situation. EventStore#2440
- Do not wait for acks/nacks after a potential subscription failure. The task might never complete. EventStore#2437
- Read-only replicas can be stuck in Subscribing to Leader mode EventStore#2427
- NodePreference.Leader is not always honored in ClusterDnsEndPointDiscoverer EventStore#2422
- Initialize a Console Logger when the application initializes EventStore#2444
The changelog below is a summary of the all of the preview releases.
- New gRPC .NET client added.
- The ability to filter reads by regex or prefix for both stream name and event type.
- New options for certicates. Can be provided as PKCS, public/private key pair and windows store.
- Introduction of a liveness health check at
{server_address}/health/live
. - Improvements to projection writes.
- Read-only replica. A node that will not partake in elections and is non promotable. Started with the
--read-only-replica
argument - The ability to resign master using
{server_address}/admin/node/resign
. - Added in the ability to set node priority with
{server_address}/admin/node/priority/{priority}
.
- Change of cluster role names from master/slave to leader/follower.
- Both client and server have been moved over to .NET Core.
- ATOM and TCP are being deprecated. These can be re-enabled with
--enable-external-tcp
and--enable-atom-pub-over-http
. - Clone nodes have been deprecated and replaced with read only replicas. Can be re-enabled using
--unsafe-allow-surplus-nodes
- Support for Event Store server on macOS.
- Undocumented projection selectors.
- The requirement for mono.
- TLS is enabled by default for internal node communication. Can be disabled by
--disable-internal-tls
. - All external HTTP is HTTPS by default.