Skip to content

Release v16.37.0

Choose a tag to compare

@github-actions github-actions released this 20 Aug 19:12
25da0e3

Three fixes to what a Chronicle costs before it can serve anything, plus the switch that makes an embedded one cheap. Measured against a play sandbox running the kernel and its client in one container: together these remove ~3s of a 7.3s cold start on an unconstrained machine, and ~5s of ~15s under a half-core limit.

Added

  • Cratis:Chronicle:Authentication:Enabled turns authentication off entirely — no token authority, no identity endpoints, no bootstrap admin user, and every gRPC service and HTTP endpoint answers anonymously. For a Chronicle embedded in one container or process with its own client over loopback, where the credential exchange protects nothing and costs every client seconds of cold start. Anywhere a network can reach the server, leaving it off publishes the whole event store (#3791)
  • auth=none in a connection string, and WithoutAuthentication() on the builder, connect without presenting credentials. Omitting credentials still means client credentials with the development pair, as it always has — auth=none is the explicit form and overrides anything else the connection string carries (#3791)

Fixed

  • Connecting a client no longer waits a full keep-alive interval. The server withheld its first heartbeat for KeepAliveIntervalSeconds while the client waits on exactly that heartbeat to consider itself connected, so every connect everywhere cost the interval — a flat second by default, unaffected by how much CPU the machine had, because it was a delay rather than work (#3790)
  • The "started successfully - ready and listening" message is logged once Kestrel has bound the port, rather than roughly half a second before it. Entrypoint scripts, test fixtures and orchestrators that gate on that line were connecting to a socket that did not exist yet (#3792)
  • The Workbench works when served under a path prefix. It already learns its prefix from the base-path meta tag and hands it to Arc, but its auth probe, login, logout and post-login redirect asked for root-absolute paths regardless — so under a prefix the probe hit whatever else was at the root and the Workbench sent the user to a /login that was not there