Back to all releases

KurrentDB 26.2: Simpler licensing, the Kontrol Plane, multi-field indexes, and a unified web UI

Kurrent Team avatar Kurrent Team
•
KurrentDB 26.2: Simpler licensing, the Kontrol Plane, multi-field indexes, and a unified web UI

KurrentDB 26.2 makes KurrentDB easier to adopt, easier to run, and easier to query. Every licensed feature is now available on a single node out of the box, the cluster gains a new foundation for coordination in the Kontrol Plane, user-defined indexes can now span multiple fields, and the embedded web UI has been brought together into one refreshed experience.

Here are the highlights. For a full breakdown of what’s new in KurrentDB 26.2, check out our documentation.

Simpler licensing: the full feature set on a single node

Starting with 26.2, single-node deployments have unrestricted access to the licensed feature set, with no license key required. Connectors, SQL access via Arrow Flight SQL, OAuth and LDAP authentication, policy-based authorization, the OpenTelemetry exporters, auto-scavenging and more are all available the moment you start a node — whether you’re evaluating KurrentDB, building a proof of concept, or running a production workload that fits on a single node. (Features that require multiple nodes are the exception.)

In exchange, multi-node deployments now require a license key configured on every node. High availability is where KurrentDB Enterprise lives, and that’s where the license now applies.

Versions 26.1 and earlier are unaffected. Kurrent Cloud is already licensed and is not affected.

For more information, read our licensing blog post and the license key documentation.

Introducing the Kontrol Plane

Until now, a KurrentDB cluster has always chosen its own leader through an internal election. In 26.2, a cluster can instead have its leader appointed by the Kontrol Plane — a logically separate, Raft-based cluster dedicated to coordination.

This is an important step in where we’re taking KurrentDB. Moving coordination into its own layer is what will later allow us to:

  • Support multiple databases managed under one control layer.
  • Store distributed but ephemeral or mutable data, such as distributed leases and checkpoints, alongside the immutable event log.

The Kontrol Plane is off by default and changes nothing until you turn it on.

For additional details, check out our Kontrol Plane configuration guide.

Multi-field user-defined indexes

User-defined indexes, introduced in 26.0 and queryable with SQL since 26.1, let you shape your event log into exactly the tables your applications and analytics tools need. In 26.2 a single index can now index multiple fields, so the questions you ask of your events can be as specific as your business needs.

For example, an index over order events by country and order total:

POST https://127.0.0.1:2113/v2/indexes/orders-by-country
Content-Type: application/json
Authorization: Basic YWRtaW46Y2hhbmdlaXQ=

{
  "filter": "rec => rec.schema.name == 'OrderCreated'",
  "fields": [
    {
      "name": "country",
      "selector": "rec => rec.value.country",
      "type": "INDEX_FIELD_TYPE_STRING"
    },
    {
      "name": "total",
      "selector": "rec => rec.value.total",
      "type": "INDEX_FIELD_TYPE_DOUBLE"
    }
  ]
}

can then be queried with both fields at once:

select * from usr."orders-by-country"
where field_country = 'Mauritius' and field_total > 149.99
limit 10

The bottom line: richer queries straight against the event log, with no extra read model to build or keep in sync.

For additional details, check out our documentation.

A unified, refreshed web UI

The embedded web UI has been split for a while between the new UI and the older admin UI. In 26.2 they’ve been brought together into a single UI and given a refresh, with many small usability improvements, including:

  • Easier navigation in the stream browser.
  • One-click navigation between nodes.
  • Light and dark themes.
  • A friendly database name and a PRODUCTION warning in the top bar, so you always know which environment you’re looking at.

The embedded UI also works alongside Kurrent Navigator, our desktop app for exploring your data, and Gaffer, our tooling for developing, testing and debugging projections.

For additional details, check out our documentation.

Discard parked messages with the new truncate API

When a persistent subscription can’t process a message, it parks it so it can be dealt with later. Parked messages could already be replayed, but the only way to discard them was to delete the parked message stream.

26.2 adds a truncate parked messages API that works just like replay — except that instead of sending the messages back to your consumers, it simply discards them. It’s available over HTTP, gRPC, and in the embedded UI.

For additional details, check out our documentation.

Run without TLS, keep your security

Setting up certificates is often the most tedious part of getting a development or test environment running. Until now, the only way to skip it was the Insecure option, which also turns off authentication and authorization.

The new DisableTls option turns off transport security only. Users still need valid credentials, and authorization policies still apply, so your development and test environments behave like production where it matters. A ClusterSecret authenticates traffic between nodes in place of mutual TLS.

Note: With TLS disabled, all traffic — including credentials and the cluster secret — is sent in cleartext. Use DisableTls only on networks where untrusted parties cannot observe traffic.

For additional details, check out our security documentation.

Other improvements

  • Larger databases: the maximum number of chunks has been raised from 400,000 to 600,000, taking the maximum logical database size from roughly 100 TB to 150 TB.
  • Configurable gRPC response compression: choose between NoCompression, Fastest, Optimal (default) and SmallestSize to trade CPU for network traffic.
  • Control over SQL engine temporary files: set where the SQL engine writes intermediate results and cap how much disk they may use, so a large query fails cleanly instead of filling the disk.
  • Disk usage metrics for every drive: kurrentdb_sys_disk_bytes now also reports the index and log drives when they are separate from the database drive.

Upgrading

26.2 is a short-term support (STS) release, and supports an online rolling upgrade from 26.1. Before upgrading, note two breaking changes:

  • Multi-node deployments need a license key on every node.
  • Transient projections have been removed in favor of SQL queries backed by secondary and user-defined indexes.

See the upgrade guide for details.

If you’d like to talk through what 26.2 means for your specific deployment, get in touch. And as always, the team is active in Discuss and Discord if you want to dig in with us directly.