Skip to content

Release v19.105.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 14:49
c55f833

Summary

Chronicle kernel nodes can now be clustered through SQL Server or PostgreSQL storage, with a guide for running Chronicle on Azure. SQL read-model indexes and joins behave better on populated tables.

Added

  • Set clustering.type to Sql to cluster kernel nodes through the configured SQL Server or PostgreSQL storage, without MongoDB. Localhost remains the default, and SQLite storage is not supported for clustering. See Clustering. (#5127)
  • A guide for running Chronicle on Azure with Microsoft Entra ID: Azure SQL with managed identity, authenticated connection resolution, health checks, webhooks and clustering. See Run Chronicle on Azure. (part of #5127)
  • A runbook for rolling out a new version to a multi-node cluster on SQL storage, including what each starting node does to the database and the guarantees Chronicle does not give. See Roll out a new version. (part of #5127)
  • Cluster membership probe, heartbeat and table refresh timings, probe counts and death-vote thresholds can now be configured for SQL and MongoDB clusters. Unset options retain the Orleans defaults. See Clustering. (#5209)
  • SQL read-model indexes build in the background on populated tables, using online builds where supported. Changed index declarations remove obsolete Chronicle-owned indexes without removing custom indexes. (#5195)
  • SQL Server string indexes honor MaxLength, StringLength, and Length, with a default bound of 450 characters for indexed strings without a declared length. Overlong writes now fail the projection partition instead of storing an unbounded value; replay existing read models to apply the bounded column mapping. (#5197)

Changed

  • SQL joins and child removals filter candidate rows in the database before loading documents, while preserving existing path and value matching. (#5196)
  • The Connections, Contracts, Workbench and Infrastructure NuGet packages now have descriptions, and Infrastructure has tags. (#5235)
  • The Maven io.cratis:chronicle-contracts artifact is now described as generated gRPC contracts instead of a Kotlin client, and the Maven, Hex and Python contracts packages link to the documentation on cratis.io. (#5235)

Fixed

  • Several kernel nodes starting at the same time against SQL storage no longer fail when they race to create databases, run migrations or register the same system state. (part of #5127)
  • The kernel now refuses to start when MongoDB clustering is configured with SQLite, SQL Server, PostgreSQL or in-memory storage, or SQL clustering with storage other than SQL Server or PostgreSQL, instead of failing later at runtime. (part of #5127)
  • The development kernel state reset is refused while SQL clustering is active, so it cannot wipe state shared by other nodes. (part of #5127)
  • Removing a reminder on SQL storage is now atomic and issues a new ETag, so concurrent nodes no longer overwrite each other's reminder changes. (part of #5127)
  • Reactors and reducers whose client stays connected now resume delivery after a kernel node in the cluster is lost, instead of stopping until the client reconnects. (#5230)