Skip to content

Latest commit

 

History

History
1029 lines (872 loc) · 100 KB

CHANGELOG.md

File metadata and controls

1029 lines (872 loc) · 100 KB

Changelog

All notable changes to this project will be documented in this file.

[Unreleased]

Cherry picked from https

Changed

Fixed

Added

  • Add the elections counter metric so users can set alerts if the number of elections over a certain period of time exceeds some number. EventStore#4179
  • Add documentation for the elections count metric EventStore#4198

Removed

Updated

[24.2.0] - 2024-02-25

Changed

  • Set the default value of CertificateReservedNodeCommonName to empty string EventStore#4001
  • Upgrade to .NET 8. EventStore#4046
  • Don't require ReadIndex in the enumerators when subscribing from $all EventStore#4057
  • Simplified HTTP pipeline EventStore#4088
  • Do not autosize thread count and streaminfocache size in containerized environments EventStore#4103
  • Explicitly set the shutdown timeout to 5s, which was default in previous dotnet versions. Behaviour unchanged since previous release. EventStore#4110
  • Re-authorize stream access in live subscriptions when stream metadata changes. EventStore#4104
  • Re-authorize stream access in live subscriptions when default ACLs change. EventStore#4116
  • Re-authorize subscriptions to $all when its stream metadata ($$$all) changes. EventStore#4118
  • Upgrade Jint to version 3.0.0. EventStore#4121
  • Updated plugin API. EventStore#4126
  • Decouple the enumerators from gRPC so they can work directly with connectors. EventStore#3998

Added

  • gRPC stream subscriptions with smooth transitions between live and catchup. Subscriptions no longer drop with "consumer too slow" reason. EventStore#4093
  • gRPC $all subscriptions with smooth transitions between live and catchup. Subscriptions no longer drop with "consumer too slow" reason. EventStore#4117
  • General support for plugin configuration. EventStore#4130
  • Improved support for plugins to perform authorization checks. EventStore#4145
  • $mem-gossip memory stream. EventStore#4123
  • Support for a wider range of authentication plugins. (facilitates user X.509 certificates plugin) EventStore#4148
  • Support for new packaging pipeline. EventStore#4157

Fixed

  • Addressed CVE-2024-26133: Potential password leak in the EventStoreDB Projections Subsystem.
  • 'Unknown' error reported to client after successful idempotent write to deleted stream. EventStore#4059
  • Report same version info when using different kind of release tags (annotated or lightweight). EventStore#4081
  • Calls to /stats/replication on a single node cluster would hang forever. EventStore#4102
  • gRPC stream subscription now receives a stream deleted exception when subscribing to a tombstoned stream from End EventStore#4108
  • gRPC stream subscription now receives CaughtUp message when subscribing to a non-existing or soft-deleted stream. Previously in such cases, the stream subscription enumerator was looping in catch-up mode until a new event is received (and thus it never sent CaughtUp to the subscription) EventStore#4108
  • Initialize replication service heartbeat interval with ReplicationHeartbeatInterval instead of NodeHeartbeatInterval . EventStore#4125
  • $all subscription enumerator returns InvalidPosition when subscribing at an invalid position. EventStore#4128
  • Build on ARM, AnyCPU solution settings was actually using X64. EventStore#4129
  • Filtered $all subscription enumerator returns InvalidPosition when subscribing at an invalid position. EventStore#4131
  • upgraded package reference for CVE-2024-0057 EventStore#4165

Removed

Breaking Changes

  • Remove the external TCP API and related configuration options. EventStore#4113 and EventStore#4153
  • The following options have been removed:
    • AdvertiseTcpPortToClientAs
    • DisableExternalTcpTls
    • EnableExternalTcp
    • ExtHostAdvertiseAs
    • ExtTcpHeartbeatInterval
    • ExtTcpHeartbeatTimeout
    • ExtTcpPort
    • ExtTcpPortAdvertiseAs
    • NodeHeartbeatInterval
    • NodeHeartbeatTimeout
    • NodeTcpPort
    • NodeTcpPortAdvertiseAs
  • The behaviour for filtered $all checkpoints has changed (EventStore#4131). Instead of receiving a checkpoint exactly after the checkpoint interval, a checkpoint will be issued at least once per checkpoint interval:
    • When live, checkpoints will still be issued after exactly checkpoint interval events.
    • When catching up, checkpoints will still be issued after exactly checkpoint interval events (except that the first checkpoint will be offset by one event).
    • When transitioning from catch-up to live, a checkpoint is issued.
    • When falling behind from live to catch-up, a checkpoint is issued.

[23.10.1] - 2024-02-20

Fixed

  • Addressed CVE-2024-26133: Potential password leak in the EventStoreDB Projections Subsystem.

[22.10.5] - 2024-02-20

Fixed

  • Addressed CVE-2024-26133: Potential password leak in the EventStoreDB Projections Subsystem.

[21.10.11] - 2024-02-20

Fixed

  • Addressed CVE-2024-26133: Potential password leak in the EventStoreDB Projections Subsystem.

[20.10.6] - 2024-02-20

Fixed

  • Addressed CVE-2024-26133: Potential password leak in the EventStoreDB Projections Subsystem.

[22.10.4] - 2023-11-22

Fixed

  • Checkpoints of filtered $all subscription not always send on correct interval. EventStore#4023
  • A way for unreplicated data to appear in a subscription or reads before being truncated EventStore#4018
  • Updating a persistent subscription clears the filter EventStore#4017
  • Persistent subscription error code regression introduced this release. EventStore#3963
  • FilteredAllSubscription checkpoint now continues to update after becomming live. EventStore#3734

Removed

[21.10.10] - 2023-11-22

Fixed

Removed

[23.10.0] - 2023-10-13

Breaking Changes

  • Renamed PersistentConfig1 system event type to $PersistentConfig EventStore#3932
  • Certain configuration parameters (mainly Interface options) have been deprecated and renamed, which would make it more clear as to what each parameter/option does. EventStore#3907

Changed

Removed

Added

Fixed

  • Race conditions when caching/uncaching chunks EventStore#3930
  • Server now always returns a valid address when replying with a NotHandled.NotLeader response EventStore#3869
  • Prevent torn transactions during replication EventStore#3896
  • Checkpoints of filtered $all subscription not always sent on correct interval. EventStore#3941
  • Report same version info when using different kind of release tags (annotated or lightweight). EventStore#3950
  • Bug in replication test: Replica was subscribing from first epoch instead of the second one EventStore#3975
  • An way for unreplicated data to appear in a subscription or reads before being truncated EventStore#3972
  • Updating a persistent subscription no longer clears the filter EventStore#3957
  • Cache client certificate authentication results for better performance/to make sure already established TLS connections continue to work properly. EventStore#3966
  • Certificate was disposed during the call if it was not an X509Certificate2 object EventStore#3960
  • Wildcard certificate names should have at least 3 domain labels EventStore#3960
  • Support usernames/passwords with unicode characters in UI (EventStore/EventStore.UI#364) EventStore#3992
  • Persistent subscription error code regression introduced this release EventStore#3996

[22.10.3] 2023-08-31

Fixed

  • Calling the admin/reloadconfig endpoint only reloaded/updated the LogLevel and the certificates were not updated on reloading the config. EventStore#3898
  • Support bloom filters for 400gb+ index files. EventStore#3881

Changed

[23.6.0] 2023-07-28

Breaking Changes

  • Disabled anonymous access by default (AllowAnonymousStreamAccess, AllowAnonymousEndpointAccess). EventStore#3905
  • Remove PrepareCount and CommitCount db settings and docs. EventStore#3858

Fixed

  • Improved synchronization during TFChunk disposal. EventStore#3674
  • Fix projection progress report. EventStore#3655
  • FilteredAllSubscription checkpoint now continues to update after becomming live. EventStore#3726
  • (EventStore.TestClient) Too strict cleanup condition causing a memory leak in rare cases when server becomes unresponsive. EventStore#3705
  • (EventStore.TestClient) Cancelation of current command. EventStore#3705
  • Use a separate IODispatcher for scavenge log. EventStore#3741
  • Don't require an equals sign when parsing a command line argument followed by an integer. EventStore#3757
  • Ignore exceptions when failing to change PTable index file permissions. EventStore#3807
  • Correctly put a projection in the faulted state if the last event in the checkpoint stream is not a checkpoint. EventStore#3816
  • Handle events that have been deleted from (now empty) chunks but not from the index. EventStore#3813
  • Race condition in ManagedProjection code when deleting a projection. EventStore#3812
  • Don't throw an error in projections if projection substreams (e.g. emitted streams, checkpoint streams etc.) do not exist when deleting a projection. EventStore#3812
  • Only log that a connection to a persistent subscription has been dropped if there was a subscription running on the TCP connection. EventStore#3824
  • Do not change the handlerType of a projection when it is updated. EventStore#3823
  • WrongExpectedVersion error in projections when multiple projection write requests arrive within a short period (create-create, create-delete, delete-create, delete-delete). EventStore#3817
  • (EventStore.TestClient) Only call context.Success() once to prevent early exit of command. EventStore#3828
  • Prevent risk of implicit transactions being partially written when crossing a chunk boundary on the leader node. EventStore#3808
  • Bump reference of System.Security.Cryptography.Pkcs for CVE-2023-29331 EventStore#3878
  • Bump transitive reference of System.Security.Cryptography.Pkcs from 7.0.2. EventStore#3877
  • Bump System.Security.Cryptography.Pkcs from 7.0.1 to 7.0.2. EventStore#3874
  • Fix IsExportable check for dev certs when unning EventStore with --dev on Windows. EventStore#3875
  • Support bloom filters for 400gb+ index files. EventStore#3876
  • Bump gRPC packages for CVE-2023-32731 EventStore#3889
  • Projections throw an out of order error for Progress changed. EventStore#3887
  • Calling the admin/reloadconfig endpoint only reloaded/updated the LogLevel and the certificates were not updated on reloading the config. EventStore#3868
  • Bump gRPC packages for CVE-2023-32731 EventStore#3895
  • Make Process CPU a UpDownCounter rather than Counter. EventStore#3892
  • Bump gRPC packages for CVE-2023-32731 EventStore#3893
  • Bump System.Text.RegularExpressions for CVE-2019-0820 EventStore#3893
  • Bump System.Drawing.Common CVE-2021-24112 EventStore#3893
  • Bump System.Security.Cryptography.* CVE-2022-34716 EventStore#3893
  • Prevent invalid message timeouts from being set in persistent subscriptions UI. EventStore#3906
  • Incorrect number of behind messages in the persistent subscriptions UI. EventStore#3906
  • Improve test stability EventStore#3908
  • Options API correctly hides the values of the newly-added sensitive options EventStore#3911
  • Ignore unknown options when dumping startup configuration EventStore#3917
  • Sender of create / update Persistent Subscription now notified of failure EventStore#3747

Added

Changed

  • Dump configuration settings in their respective groupings at startup. EventStore#3752
  • Log more readable error message in the server logs when the SSL handshakes fail. EventStore#3832
  • Improved log message for connectivity problem between nodes. EventStore#3839
  • Update log level to Warning if AllowUnknownOptions sets to true. EventStore#3848
  • Lower the log level of NACK logs for persistent subscriptions. EventStore#3854
  • Update UI build after latest changes. EventStore#3683
  • Publish messages from the persistent subscriptions IODispatcher to the Persistent Subscriptions queue rather than the main queue. EventStore#3702
  • CI Unit test settings. EventStore#3712
  • (EventStore.TestClient) Log available commands separately. EventStore#3705
  • Adjustments to reduce allocations. EventStore#3731
  • (EventStore.TestClient) Support specifying values with a metric prefix with the testclient. EventStore#3748
  • Update Jint library version to 3.0.0-beta-2048. EventStore#3788
  • Minor adjustments in solution file. EventStore#3798
  • Move metric configuration from arrays to dictionaries. EventStore#3837
  • IO metrics using Counter instrument to ObservableCounter instrument. EventStore#3834
  • Use $GITHUB_OUTPUT for workflow output. EventStore#3833
  • Use latest actions/checkout@v3. EventStore#3833
  • Disable queue processing metrics by default, they add a lot of histograms. EventStore#3850
  • Update help output so that it matches the documentation. EventStore#3904

Removed

[22.10.2] - 2023-05-15

Fixed

  • Handle events that have been deleted from (now empty) chunks but not from the index EventStore#3813
  • Sender of create / update Persistent Subscription now notified of failure EventStore#3747

Added

  • Deprecation warnings for UnsafeIgnoreHardDeletes and AlwaysKeepsScavenged EventStore#3778

[22.10.1] - 2023-02-13

Fixed

  • Whitespace EventStore#3649
  • Patch Newtonsoft from 13.0.1 to 13.0.2 EventStore#3677
  • Database checkpoints becomes inconsistent when running out of disk space EventStore#3681
  • Slow persistent subscription consumer no longer slows down other subscribers EventStore#3701
  • Cancel reads already in the reader queues when the gRPC call is cancelled EventStore#3718
  • FilteredAllSubscription checkpoint now continues to update after becomming live EventStore#3276
  • Downgraded an error log message that is not really an error to debug level EventStore#3727

Added

  • Improvements to Scavenge HTTP API (query if scavenge is running, stop any running scavenge) EventStore#3656
  • ScavengeId to log context EventStore#3656
  • More information to SLOW QUEUE MSG logs for reads and writes EventStore#3706

Changed

Fixes

[21.10.9] - 2022-11-21

Added

  • Dev mode option to generate and trust dev certs for a secure single node on localhost. EventStore#3606
  • AllowUnknownOptions option that allows EventStoreDB to start when unknown options are present (default: false) EventStore#3653

Fixed

  • Node not going into ready state due to synchronization bug in UserManagementService EventStore#3599
  • Race condition when creating a persistent subscription to a stream at the same time as creating that stream. EventStore#3601
  • Quick responses for authentication requests when the node is not ready EventStore#3609
  • Edge cases in maxage read fast path. EventStore#3646
  • Make MergeIndexes endpoint return proper result. Fixes issue #3573 EventStore#3573
  • Incorrect error message when deleting a stream using gRPC. Fixes issue #3547 EventStore#3583
  • Duplicate Persistent Subscriptions in the EventStoreDB UI EventStore#3533

Changed

  • Start standard projections and atompub over http when running in dev mode EventStore#3615
  • Display node status as 'Unreachable' instead of 'Dead' in the cluster status page EventStore#3612

[22.10.0] - 2022-11-10

Security

Added

Fixed

  • Make MergeIndexes endpoint return proper result. Fixes issue #3573 EventStore#3573
  • gRPC calls can no longer stall if received during server initialization. EventStore#3584
  • Incorrect error message when deleting a stream using gRPC. Fixes issue #3547 EventStore#3583
  • Node not going into ready state due to synchronization bug in UserManagementService EventStore#3599
  • Race condition when creating a persistent subscription to a stream at the same time as creating that stream. EventStore#3601
  • Quick responses for authentication requests when the node is not ready EventStore#3609
  • Exit application when hosted service shuts down EventStore#3624
  • Markdown syntax error EventStore#3629
  • Downgrade GitInfo due to breaking change EventStore#3633
  • Duplicate Persistent Subscriptions in the EventStoreDB UI EventStore#3533
  • Silenced warning Tried to read actual position -1 when it does not represent a suspicious occurrence. EventStore#3632
  • Edge cases in maxage read fast path. EventStore#3646

Changed

  • Update support for Keep Alive as per RFC. Fixes issue #3259 EventStore#3574
  • Deleting persistent subscriptions to $all over HTTP is not supported EventStore#3593
  • Don't catch and log OperationCanceledException in PolicyAuthorizationProvider. EventStore#3594
  • Extend unit test timings slightly for tests that sometimes timeout EventStore#3596
  • Start standard projections and atompub over http when running in dev mode EventStore#3615
  • Display node status as 'Unreachable' instead of 'Dead' in the cluster status page EventStore#3612
  • Fix typos and improve grammar on the server documentations' diagnostics page EventStore#3616
  • Update EventStore.Plugins to latest version EventStore#3619

[21.10.8] - 2022-09-16

Security

Added

Fixed

[22.6.0] - 2022-07-21

Changed

  • Consolidate to single protobuf implementation EventStore#3362
  • Updated gRPC to include fix for flaky tests EventStore#3364
  • Reject gRPC call to create a projection if TrackEmittedStreams=true and EmitEnabled=false EventStore#3412
  • Proto names of emit_enabled and track_emitted_streams swapped for backwards compatibility EventStore#3412
  • Read operations in IODispatcher are no longer tracked if they don't have a timeoutAction EventStore#3435
  • Sort the dump of the configuration settings alphabetically EventStore#3475
  • Update UI for 22.6.0 EventStore#3519

Fixed

  • Update the epoch checkpoint with the proper position before going offline for truncation EventStore#3414
  • Removed aggregate exception when closing a call to the stats endpoint EventStore#3495
  • Possiblility of unreplicated writes appearing in reads and subscriptions EventStore#3527
  • Removed unnecessary "Should never complete request twice error" EventStore#3522

Added

  • Logging around read timeouts in projection emitted streams and emitted stream trackers EventStore#3435
  • Populate $all position for stream reads/subscriptions/persistent subscriptions. gRPC only. Non-transaction events only. EventStore#3459
  • TrustedRootCertificateStoreName, TrustedRootCertificateStoreLocation, TrustedRootCertificateSubjectName and TrustedRootCertificateThumbprint certificate options. EventStore#3498
  • Allow loading trusted root certificates from the Windows cert store. EventStore#3498
  • Better summaries for CI Runs EventStore#3496 - Thanks @Tyrrrz!

[21.10.7] - 2022-07-29

Fixed

  • Prevent gRPC subscriptions from hanging while catching up EventStore#3532
  • Fix "Known" and "Current" values showing as NaN in Persistent Subscriptions Commercial UI

[21.10.6] - 2022-07-20

Fixed

  • Possiblility of unreplicated writes appearing in reads and subscriptions EventStore#3527
  • Removed unnecessary "Should never complete request twice error" EventStore#3522

[21.10.5] - 2022-06-15

This changelog includes the fixes from 21.10.3 and 21.10.4, as these were cloud-only releases.

Added

  • Support for DNS discovery with a secure cluster having only DNS SANs (including wildcard SANs). EventStore#3460
  • deadline_duration feature for batch append. EventStore#3454
  • Fast path for forward reads that start after the LastEventNumber. EventStore#3479

Fixed

  • Attempt to reconnect to the leader every second if the node fails to establish a connection (for example due to DNS lookup timeout). EventStore#3462
  • Fix invalid cast when completing a scavenge after it has been interrupted. EventStore#3478
  • Can now use the ptable bloom filters after an index scavenge. EventStore#3493
  • Ensure no pending writes can be incorrectly acked or published when going offline for truncation. EventStore#3502
  • Metadata values need to be raw json format. EventStore#3503
  • Fix invalid event number error when opening a deleted event from $all in the UI. EventStore.UI#326
  • Fix previous button showing an empty screen in the UI if there are no events. EventStore.UI#323
  • Handle NotFound errors more gracefully in the UI. EventStore.UI#324
  • Fix off by one error in behind message count in persistent subscriptions UI. EventStore.UI#320

Changed

Removed

  • Remove the red and green status dots from persistent subscriptions UI. EventStore.UI#318

[21.10.4] - 2022-04-26 (Cloud only)

Fixed

  • Invalid cast when trying to complete a scavenge after the scavenge was interrupted EventStore#3476

Added

  • Fast path for forward reads that start after the LastEventNumber EventStore#3474

[21.10.3] - 2022-04-11 (Cloud only)

Fixed

  • Attempt to reconnect to the leader every second if the node fails to establish a connection (for example due to DNS lookup timeout). EventStore#3458

Added

  • Support for DNS discovery with a secure cluster having only DNS SANs (including wildcard SANs) EventStore#3427
  • deadline_duration feature for batch append EventStore#3454

[21.10.2] - 2022-03-04

Fixed

  • Set chunk end number to the max between current end number and the added chunk number EventStore#3365
  • Use the term "certificate signed by a private CA" instead of "self-signed certificates" EventStore#3372
  • Directory.EnumerateFiles regression causing slower startup/truncation times on large databases EventStore#3385
  • Include current stream revision on internal delete messages EventStore#3405
  • Null reference exception when getting persistent subscription info EventStore#3408
  • IODispatcher bug causing password change notifications to be missed sometimes EventStore#3421
  • Make password changes more robust EventStore#3429
  • Improved Stream Existence Filter flushes EventStore#3425
  • Send full certificate chain from both server and client side during TLS handshake (requires manually adding intermediate certificates to the store) EventStore#3446
  • Prevent projections subsystem from getting stuck in a stopping state due to read timeouts EventStore#3441
  • Risk of PreLeader not successfully transitioning to Leader if a TCP disconnect occurs at just the right time. EventStore#3443

Added

[21.10.1] - 2021-12-16

Fixed

  • Exception in scheduled message callback crashes server EventStore#3270
  • IODispatcher is now threadsafe for request tracking EventStore#3270
  • InvalidOperationException caused by reading RequestStream after completing the PersistentSubscription gRPC call EventStore#3287
  • Return correct status code in batch append EventStore#3295
  • Fix partitionBy not working with numbers EventStore#3325
  • Fix link parsing in persistent subscription service. EventStore#3328
  • MaxAge fast path: corner cases and support for SkipIndexScanOnRead EventStore#3339
  • use last indexed position of all stream when consumer subscribes to all filtered live EventStore#3342
  • Prevent risk of deadlock when creating a PersistentSubscriptionGroup EventStore#3344

Added

Changed

  • Use file checkpoints on Linux and memory mapped checkpoints on Windows EventStore#3340
  • Deprecate NamedConsumerStrategy when creating persistent subscriptions over gRPC EventStore#3352

[20.10.5] - 2021-12-06

Fixed

  • Prevent nodes that aren't part of a cluster from pruning gossip seeds EventStore#3116
  • Overflow error in persistent subscriptions extra statistics EventStore#3162
  • Prevent the EpochManager from attempting to read epochs that should have been cached EventStore#3189
  • Off-by-one error in Index committer service EventStore#3196
  • Race condition where a node becomes leader and immediately writes to streams that have recently been written to but notEventStore#3187
  • Additional Options to Logging EventStore#3207
  • Object disposed exception in EventCountersHelper on shutdown EventStore#3245
  • Added verification checking if a message is of NotHandled type in PersistentSubscriptions Read message handling EventStore#3158
  • Breaking change in log file name by removing log rotation options EventStore#3267
  • Exception in scheduled message callback crashes server EventStore#3272
  • IODispatcher is now threadsafe for request tracking EventStore#3272
  • Clear HeadingEventReader cache when stopping the readers EventStore#3233
  • InvalidOperationException caused by reading RequestStream after completing the PersistentSubscription gRPC call EventStore#3294
  • 404 error for scavenge no longer shows in UI EventStore#3284
  • Replica stats show in the UI EventStore#3284
  • Ensure the projections IODispatcher clears up pending requests EventStore#3244
  • Use the right advertised host value in a cluster configuration EventStore#3224
  • MaxAge fast path: corner cases and support for SkipIndexScanOnRead EventStore#3330
  • Fix link parsing in persistent subscription service EventStore#3328
  • Prevent risk of deadlock when creating a PersistentSubscriptionGroup EventStore#3343

Changed

  • Check /etc/eventstore First for Custom Configuration EventStore#3207
  • Warn that projection debugging uses a different engine to the one running in Event Store EventStore#3284
  • Do not download intermediate certificates from AIA URLs EventStore#3283
  • Use file checkpoints on Linux and memory mapped checkpoints on Windows EventStore#3332

Added

  • LeaderElectionTimeoutMs option to allow configuring the timeout for election messages. EventStore#3263
  • Support for Intermediate CA certificates EventStore#3283
  • Validation of certificate chain with node's own certificate on start up EventStore#3283

[21.10.0] - 2021-11-03

Fixed

  • HTTP port parameter in docker-compose.yaml EventStore#2995
  • WrongExpectedVersion when deleting a projection with all delete options EventStore#3014
  • Prevent emitted checkpoint streams from being deleted when not enabled. EventStore#3030
  • Http authentication when a : is present in the user's password EventStore#3070
  • Persistent subscriptions: Rename LastProcessedEventPosition to LastCheckpointedEventPosition EventStore#3073
  • Potential race condition in BatchAppend EventStore#3138
  • Added verification checking if a message is of NotHandled type in PersistentSubscriptions Read message handling EventStore#3158
  • Issue with not handling null event data correctly in Projections EventStore#3171
  • Incorrectly setting OutputState on IQuerySources when only a fold is defined in Projections EventStore#3171
  • Off-by-one error in Index committer service EventStore#3186
  • Node stays stuck in Leader state until next elections if a quorum never emerges EventStore#3181
  • User provided metadata to be formatted correctly in Projections EventStore#3188
  • Incorrect configuration file selection on linux EventStore#3159
  • Prevent the EpochManager from attempting to read epochs that should have been cached EventStore#3198
  • Race condition where a node becomes leader and immediately writes to streams that have recently been written to but not indexed, resulting in events with incorrect numbers in their streams. EventStore#3201
  • Handling $deleted in the interpreted projections runtime. EventStore#3216
  • Incorrect log message templates EventStore#3223
  • LinkTo metadata not properly read in Projections EventStore#3227
  • Clear HeadingEventReader cache in Projections when stopping the readers EventStore#3233
  • Use the right advertised host value in a cluster configuration EventStore#3224
  • Ensure the IODispatcher clears up pending requests EventStore#3244
  • Replica stats page correctly shows catching up nodes EventStore#3247
  • Set last checkpoint for persistent subscriptions when they are loaded EventStore#3241
  • Object disposed exception in EventCountersHelper on shutdown EventStore#3242
  • Memory Leak in Batch Append EventStore#3253
  • Batch append not using requested uuid format EventStore#3255
  • StreamExistenceFilter truncation corner case EventStore#3257

Added

  • Alpine Docker Image EventStore#3069
  • A bloom filter to quickly check stream existence EventStore#3078
  • LeaderElectionTimeoutMs option to allow configuring the timeout for election messages EventStore#3121
  • Add a log message describing how to disable the stream existence filter EventStore#3172
  • New options to control logging: --log-console-format, --log-file-size, --log-file-interval, --log-file-retention-count, and --disable-log-file EventStore#3159
  • Event type index for LogV3 EventStore#3114
  • ClientCapabilities proto for discovering which gRPC methods are available on the server EventStore#3194
  • ServerFeatures proto to allow clients to discover which features are available on the server EventStore#3251
  • Control message to indicate client compatibility level on reads EventStore#3197
  • Bloom Filters and LRU Caches to PTables EventStore#3161
  • Log level to compact json log output EventStore#3212
  • Support for Intermediate CA certificates EventStore#3176
  • Validation of certificate chain with node's own certificate on start up EventStore#3176

Changed

Removed

[20.10.4] - 2021-07-22

Added

Fixed

  • Improve lookup of first non-expired events in long stream with maxage EventStore#3046
  • Aborted http requests are no longer logged in the authentication middleware EventStore#3044
  • Fix projections getting stuck when reading from truncated streams EventStore#3056
  • Prevent scavenged events from being passed to ExecuteHandler EventStore#3055

[21.6.0] - 2021-06-24

Added

Fixed

  • Regression in TCP connection EventStore#2834
  • Mutex being released on wrong thread resulting in an annoying log message on shutdown EventStore#2838
  • Keep alive timeout check EventStore#2861
  • TestClient not exiting after executing --command EventStore#2871
  • Rdall for TestClient EventStore#2892
  • Parsing of yaml config options specified as an array EventStore#2906
  • Start projections when requested EventStore#2929
  • Handle missing case for UpdatePersistentSubscriptionTo{Stream,All}Result.DoesNotExist EventStore#2941
  • In gRPC projection management, disable a projection when writing a checkpoint, and abort it if not writing a checkpoint. EventStore#2944
  • Parameter count mismatch when loading the dashboard in the UI EventStore#2964
  • Tests failing with empty error message in EventStore.Core.Tests.Http.Cluster.when_requesting_from_follower.*. EventStore#2969
  • Tests failing with already exists error because same initial values were being re-used in EventStore.Core.Tests.ClientAPI.when_connection_drops_messages_that_have_run_out_of_retries_are_not_retried. EventStore#2969
  • Fix projections getting stuck when reading from truncated streams EventStore#2979
  • Only return nodes in Follower state in tests. EventStore#2974
  • Wait for node to become a leader/follower in tests. EventStore#2974
  • Fix --version printing EventStore#3004
  • Aborted http requests are no longer logged in the authentication middleware EventStore#3006
  • Prevent scavenged events from being passed to Projections EventStore#2966
  • Fix Potential Server Side Crash w/ gRPC Batch Appends EventStore#2991

Changed

[20.10.3] Server - 2020-04-14

Added

  • --stream-info-cache-capacity option to allow setting the cache capacity of the ReadIndex. EventStore#2762
  • auto configuration for stream cache, reader threads and worker threads. EventStore#2934

Changed

[20.10.2] Server - 2020-03-12

Changed

  • Increased the maximum chunk count to patch issue with 25 logical TB. EventStore#2830
  • Updated internal dependencies and added client builds for .NET 5.0 EventStore#2764

Fixed

  • Permission Denied when performing privileged commands on a follower EventStore#2803
  • --insecure has stopped working after targeting .NET 5.0 EventStore#2779
  • Track retry count for persistent subscription messages after a client has lost connection. EventStore#2797
  • Time out gossip discovery on the TCP client if the task does not complete EventStore#2821
  • Check for old/replayed events only if the event passes the event filter in projections EventStore#2809
  • Prevent a projection checkpoint from being emitted at same position twice EventStore#2824
  • Proactively send heartbeat requests to the remote party if no data was sent within the last heartbeat interval EventStore#2772
  • Regression in TCP connection introduced by commit: cd2aa67 from PR: #2772 [#2834][#2834]

Added

  • Content Type Validation to projections which will allow projections to only handle valid json events if isJson is set to true EventStore#2812

[21.2.0] Server - 2021-02-26

Added

  • --stream-info-cache-capacity option to allow setting the cache capacity of the ReadIndex. EventStore#2762
  • Parked message count is now available on persistent subscription stats EventStore#2792
  • Content Type Validation to projections which will allow projections to only handle valid json events if isJson is set to true EventStore#2812
  • script to check for proto changes EventStore#2817
  • Server Support for gRPC Keep Alive EventStore#2819

Changed

  • Updated internal dependencies and added client builds for .NET 5.0 EventStore#2764
  • GossipOnSingleNode is now on by default and the setting has been deprecated in config EventStore#2818
  • Increased the maximum chunk count to patch issue with 25 logical TB. EventStore#2822

Fixed

[20.10.0] - 2020-12-16

Fixed

Changed

  • Read operations are now backed by System.Threading.Channels EventStore#2712
  • Add the certificate subject to the log message printed when there is a certificate validation error EventStore#2746
  • DNS Seeds Are No Longer Resolved to IP Addresses EventStore#2753
  • Update the UI with replication stats fix EventStore#2726
  • Add checkpoint based tracking of proposed epoch numbers EventStore#2745

[20.6.1] - 2020-09-28

Changed

  • Log level from Verbose to Debug/Information for important messages EventStore#2538
  • Change options that refers to disabling tls to explicitly refer to disabling tcp tls. EventStore#2537
  • Adjust deprecation warning from referring to 20.02 to 20.6.0 EventStore#2567
  • Do not print stack traces when an invalid configuration is encountered. EventStore#2578
  • Instead of always giving system access over HTTP when running with --insecure (since no client certificate is provided), only pre-authorize the gossip and election routes with system access EventStore#2587
  • Don't treat unresolved links as deleted linkTo events when checking for deleted partitions in projections. EventStore#2586
  • When --dev is set, disable TLS on all interfaces instead of setting development certificates EventStore#2581
  • Do not set --mem-db when --dev is set EventStore#2581
  • Upgraded dotnet sdk to 3.1.301 EventStore#2582
  • Enable v5 client cluster connectivity acceptance tests EventStore#2554
  • Changed the default cluster gossip port from 30777 to 2113 EventStore#2618
  • DisableInternalTcpTls has no effect, Insecure mode should be used to disable it EventStore#2628
  • Disable authentication & authorization when --insecure is specified EventStore#2614
  • gRPC reads will always try and read maxCount of events if it's not reached the end of the stream. EventStore#2631
  • MessageTimeout and CheckpointAfter in persistent subscription settings are now expressed in milliseconds. EventStore#2642
  • Updated startup logs to be more clear about security and interfaces. EventStore#2656
  • Use AdvertiseHostToClientAs, AdvertiseHttpPortToClientAs and AdvertiseTcpPortToClientAs in the NotHandled.NotLeader response from the node. EventStore#2665
  • Updated Pre-built UI to latest version EventStore#2686
  • Responses to append will include expected revision / state sent from client EventStore#2679
  • Update plugin version EventStore#2690

Fixed

  • Do not start other services if run is being skipped when --help or --version are specified EventStore#2558
  • Prevent Stackoverflow when accepting too much data over a TCP connection on dotnet core EventStore#2560
  • Improved output of CLI help EventStore#2577
  • Log to default directory; args from CLI EventStore#2574
  • Slow gRPC subscriptions EventStore#2566
  • Handle successful link event resolution when projections emit events. EventStore#2465
  • gRPC unable to read events from a truncated stream EventStore#2631
  • Error on TCP operations after default user fails authentication EventStore#2638
  • Wrong calculation of checkpoint interval for filtered subscriptions EventStore#2608
  • Prevent gRPC errors when subscriptions are disposed EventStore#2647
  • Do not do an exact check on certificate subject to match the Common Name EventStore#2681
  • Removed cancellation race condition EventStore#2682
  • Properly handle LiveUntil in GrpcMessage.SendOverGrpc and add a Deadline parameter EventStore#2685
  • Requests with more than one url segment are correctly routed EventStore#2691
  • Handle authentication provider endpoints first followed by legacy endpoints EventStore#2694
  • Prevent clients from connecting to read only replicas which have not yet caught up EventStore#2674 Thanks to @01100010011001010110010101110000

Added

  • Option to set client certificate common name EventStore#2572
  • --insecure flag to disable TLS on all interfaces (TCP & HTTP) to eliminate requirement for certificates to make it easier to run EventStoreDB EventStore#2556
  • Ability to reload certificates by triggering the /admin/reloadconfig endpoint or by sending a SIGHUP signal (linux only) EventStore#2590
  • Ability to load (or reload) default log level from EventStore config file EventStore#2602
  • Logging around cases where the latest stream's prepare could not be read EventStore#2613
  • Introduced the ability to restart the persistent subscriptions service EventStore#2605
  • AdvertiseHostToClientAs, AdvertiseHttpPortToClientAs and AdvertiseTcpPortToClientAs to allow setting the gossip and TCP endpoints advertised to clients. EventStore#2641
  • Docker-compose file EventStore#2657
  • Allow external clients to discover supported authentication methods EventStore#2637

Removed

  • Terraform templates for generating a certificate authority and node certificates as we have an Event Store Certificate generation tool available. EventStore#2653
  • Development mode EventStore#2648

[20.6.0] - 2020-06-09

Changed

  • Update UI and submodule EventStore#2493
  • gRPC Leader Not Found Exception will now return host/port in the trailers EventStore#2491
  • More changes to support DNS endpoints in the Client API. EventStore#2487
  • Removed UseSslConnection from the Tcp Client API Connection Settings Builder and replaced it with DisableTls and DisableServerCertificateValidation to resemble the options on the server more closely. EventStore#2503
  • Set UseSslConnection=false and ValidateServer=false in connection string tests where required EventStore#2505
  • Patch the version files when building the docker container so that the logs reflect that information. EventStore#2512
  • Write leader's instance ID in epoch record. Pass on the epoch record's leader's instance id and each node's gossip information during elections to the leader of elections to determine more accurately if the previous leader is still alive when choosing the best leader candidate. EventStore#2454
  • Updated the EventStore.Plugins version EventStore#2521
  • Update Embedded Client Plugins Package to 20.6 EventStore#2527
  • For gRPC use the commit and prepare positions from the ResolvedEvent instead of the Transaction Position as the Prepare Position and the Log Position in the case where the commit position is null. EventStore#2522
  • Require IP or DNS SAN and CN=eventstoredb-node in client certificate to be assigned system role EventStore#2513
  • Use CommitIndexed instead of CommitAck for the completion of the Write Request EventStore#2529
  • Add the users in the $ops group the ability to restart the projection's subsystem. EventStore#2526
  • Added HostStat.NET dependency to embedded client EventStore#2534
  • Disable atomPub by default except when in dev mode. EventStore#2531
  • Restructured stream name for future planned changes EventStore#2530

Removed

Fixed

  • When starting Event Store without an Index Path specified (as is the case when running in memory), the server would crash with a NullReferenceException. EventStore#2502
  • Compiling EventStore in Debug Mode EventStore#2509
  • Test client not respecting --tls-validate-server=False EventStore#2506
  • Logging Object synchronization method was called from an unsynchronized method as a warning instead of fatal when shutting down EventStore EventStore#2516
  • VNodeState in cluster.proto not matching EventStore.Core.Data.VNodeState EventStore#2518
  • EventStore.Client.Embedded missing package dependencies EventStore#2496
  • Correct the Java package names in protocol buffers definitions EventStore#2535

Added

[20.6.0 - Release Candidate] - 2020-05-15

Changed

  • 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 with UseCustomHttpMessageHandler 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
  • Authorization and Authentication Plugins no longer require MEF EventStore#2457
  • Appends will now return a oneof response types which currently is either a Success or a WrongExpectedVersion. EventStore#2463
  • Enable the Test Client to connect to a dns or ip endpoint EventStore#2474
  • AuthToken field and constructor added to UserCredentials EventStore#2471
  • The connection settings for the Tcp Client now accepts Dns EndPoint as a means to connect to the nodes in the cluster. EventStore#2480
  • Authenticate requests as the system user if they provide a valid client certificate with the provided trusted root certificate EventStore#2475
  • Require a system user for gossip update, and for all election operations EventStore#2475
  • Update UI submodule as well as the pre-built UI. EventStore#2490

Removed

Added

  • Supports for pull request linting and automatic changelog update EventStore#2391
  • The following options have been added AuthorizationType and AuthorizationConfig to mirror that of the existing AuthenticationType and AuthenticationConfig. 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 for System.UriTemplate from .NET Framework 4.8 reference source (MIT-licensed) instead of depending on SimpleSyndicate.UriTemplate (no license) EventStore#2439
  • TCP jwt authorization on the wire EventStore#2449
  • Push EventStore.ClientAPI and EventStore.ClientAPI.Embedded to GitHub Package Registry EventStore#2462
  • Provide the ability to specify DnsEndPoints as part of gossip seeds. EventStore#2455
  • Provide the ability to specify DnsEndPoints as advertise information EventStore#2455
  • Extended the proto contract for read responses to include Stream Not Found. EventStore#2473
  • With the terminology changes we made, the class names have been changed but we just missed renaming the files. EventStore#2383
  • Fix bug introduced by f87b317b78248638aba18a6173e63b809ece5d66 EventStore#2406
  • When restarting each node one at a time, should keep db as the test fixture will remove the root directory. This test fails the CI quite often. EventStore#2482
  • Use TrySetResult instead of SetResult so that exceptions are not thrown if setting result twice EventStore#2406

Fixed

  • 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
  • Skip emitted events during recovery if their linked event no longer exists. EventStore#2447
  • Overflow bug when setting file size based on number of midpoints EventStore#2450
  • Off by one in GetDepth() which can cause less midpoints to be computed when increasing IndexCacheDepth in some cases EventStore#2450
  • Broken CI Build EventStore#2466
  • the default ArraySegment's data is null, not an empty array. EventStore#2486

Bug

  • Event Counts in GRPC Transport no longer wrap to negative values if > int.MaxValue EventStore#2452

Updated

  • Changed the default schema on the projection and users manager to be https. EventStore#2459

[6.0.0 - Preview 3] - 2020-03-11

The changelog below is a summary of the all of the preview releases.

Added

  • 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}.

Changed

  • Change of cluster role names from master/slave to leader/follower.
  • Both client and server have been moved over to .NET Core.

Deprecated

  • 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

Removed

  • Support for Event Store server on macOS.
  • Undocumented projection selectors.
  • The requirement for mono.

Security

  • TLS is enabled by default for internal node communication. Can be disabled by --disable-internal-tls.
  • All external HTTP is HTTPS by default.