EventStoreDB Documentation
Getting started
  • v24.6
  • v24.2
  • v23.10
  • v22.10
  • v5
Connectors
  • Clients

    • EventStoreDB clients
  • HTTP API

    • v24.6
    • v24.2
    • v23.10
    • v22.10
    • v5
  • Deprecated

    • Legacy TCP clients
Cloud
  • Community forum
  • Articles
  • Webinars
  • Release notes
Getting started
  • v24.6
  • v24.2
  • v23.10
  • v22.10
  • v5
Connectors
  • Clients

    • EventStoreDB clients
  • HTTP API

    • v24.6
    • v24.2
    • v23.10
    • v22.10
    • v5
  • Deprecated

    • Legacy TCP clients
Cloud
  • Community forum
  • Articles
  • Webinars
  • Release notes

Server v24.6


  • Server Quick Start

    • Introduction
    • What's New
    • Installation
    • Usage telemetry
  • Configuration

    • How-to
    • Database
    • Security
    • Networking
    • Clustering
  • Features

    • Admin UI
    • Event streams
    • Indexes
    • Projections
    • Persistent subscriptions
  • Operations

    • Upgrade Guide
    • Maintenance
  • Diagnostics
    • Diagnostics
    • Logs
    • Metrics
    • Integrations

What's New

This page describes new features and other changes in EventStoreDB 24.6.

New features

  • Legacy TCP Client API plugin Commercial
  • macOS arm64 support for development purposes
  • Additional metrics

Legacy TCP Client API plugin Commercial

EventStoreDB v23.10 is the last release to natively support the legacy TCP-based client protocol. Version 24.2 removed it completely.

This release introduces a new plugin that allows to connect to the database with the legacy TCP API. This is a stop-gap solution for customers who have not yet upgraded to the gRPC API.

Read more about enabling and configuration of the TCP API plugin in the documentation.

Apple Silicon support for development

An alpha build was available for running EventStoreDB on arm64 processors since EventStoreDB v22.10 using a Docker image.

Since version 24.6, EventStoreDB can now be built from source and executed on macOS with Apple Silicon.

Additional metrics

Continuing the work on observability, the following metrics are now available.

  • Election counter: eventstore_elections_count
  • Projections.
    • Projection status: eventstore_projection_status
    • Percent progress: eventstore_projection_progress
    • Events processed since restart: eventstore_projection_events_processed_after_restart_total
  • Persistent Subscriptions:
    • Connection count: eventstore_persistent_sub_connections
    • Total in-flight messages : eventstore_persistent_sub_in_flight_messages
    • Total number of parked messages: eventstore_persistent_sub_parked_messages
    • Oldest Parked Message: eventstore_persistent_sub_oldest_parked_message_seconds
    • Total Number of Item processed: eventstore_persistent_sub_items_processed
    • Last Seen Message:
      • eventstore_persistent_sub_last_known_event_number
      • eventstore_persistent_sub_last_known_event_commit_position
    • Last checkpoint event:
      • eventstore_persistent_sub_checkpointed_event_number
      • eventstore_persistent_sub_checkpointed_event_commit_position

Feature enhancements

  • Performance improvements
  • X.509 authentication in client libraries
  • Metric support for Linux, FreeBSD, macOS
  • Allow specifying the status Code for health requests
  • Fix: Events in explicit transactions can be missing in $all reads
  • Miscellaneous

Performance improvements

Several performance and compatibility improvements have been made to EventStoreDB and client SDKs, described below.

Reduced FileHandle usage by 80%

The number of file handles used by the database has been reduced by 80%. On large databases it results in:

  • Reduced likelihood of hitting the default OS file handle limit
  • Lower overall memory footprint

Faster Startup For Scavenged databases

Large database with thousands of scavenged chunks now starts faster. A 10x improvement has been observed in testing.

X.509 authentication in client APIs Commercial

Refer to the clients documentation for instructions on how to enable and use X.509 certificates with the EventStoreDB clients.

Metrics support for Linux, FreeBSD, OSX

The following System metrics are now available on the following platforms:

  • eventstore_sys_load_avg: Linux, FreeBSD, macOS, Windows
  • eventstore_sys_cpu: Linux, FreeBSD, macOS

The following Process metrics are now available on the following platforms:

  • eventstore_disk_io_bytes: Linux, Windows and macOS

Allow specifying the HTTP status Code for health requests

The HTTP status code to be returned by the /health/live endpoint can be provided using the liveCode query parameter. For example, making a GET HTTP call to /health/live?liveCode=200 will return an empty response with 200 OK status code.

This is useful for liveness probe expecting specific status code.

Fix - Events in explicit transactions can be missing from $all reads

This bug only appears with events written in explicit transactions with the deprecated TCP API. They will not appear on filtered $all reads and subscriptions under specific circumstances.

This fix will also be back ported to v23.10.2 and v22.10.6.

Miscellaneous

  • Index merge will now continue without bloom filters if there is not enough memory to store them.
  • Node advertise address is used for identifying nodes in the scavenge log.
  • Incomplete scavenges that previously got status Failed will now be marked as Interrupted.
  • Error will be logged when the node certificate does not have the necessary usages.
  • More information made available in the current database options API response.
  • Projections will now log a warning when the projection state size becomes greater than 8 MB.

Breaking changes

Persistent subscription checkpoint event type

The persistent subscription checkpoint event type has been changed from SubscriptionCheckpoint to $SubscriptionCheckpoint.
Checkpoints written before upgrading will still have the old event type and will continue to work.

Deposed leader truncation: Two restarts needed

Previously a deposed leader that needed offline truncation would:

  • Set a truncate checkpoint and shutdown
  • Upon restart, truncate its log and join the cluster

The process is now:

  • Set a truncate checkpoint and shutdown
  • Upon restart, truncate its log, shutdown

This will affect nodes that run under a Service Manager configured to disallow successive stops of the process, like systemd with StartLimitIntervalSec and StartLimitBurst.

File-copy backup and restore: Two restarts needed

Part of the file copy backup and restore procedure requires copying the chaser checkpoint file over the truncate checkpoint file.
This might trigger the database to truncate the log on startup.

Previously the process was:

  • Set the truncate checkpoint
  • Start the node.

The process is now:

  • Set the truncate checkpoint
  • Start the node
    • if needed, the log will be truncated and the node will shut down
  • Start the node

This will affect nodes that run under a Service Manager configured to disallow successive stops of the process, like systemd with StartLimitIntervalSec and StartLimitBurst

Unbuffered config setting

The --unbuffered config setting is deprecated and has no effect when set to true. This option was used to enable unbuffered and direct IO when writing to the file system, and it is no longer supported.

You can read more about any breaking changes and what you should be aware of during an upgrade in the Upgrade Guide.

Prev
Introduction
Next
Installation