Skip to content

Release v3.15.1

Choose a tag to compare

@github-actions github-actions released this 29 Oct 17:07
623a10a

Under load the session dropped on its own keepalive watchdog, and handlers crashed inside send_data. The cause is that everything shared one HTTP/2 connection, and the gRPC Mint adapter queues outgoing request bodies for a whole connection in one queue. A large result waiting on flow control therefore held back the keepalive answers (session drop and kernel eviction) and every other send. Sends are GenServer.calls with a 5 s timeout, so they exited and took the handler down.

Added

  • The session (Connect stream and keepalive answers) runs on its own HTTP/2 connection to the same server (Connection.session_channel/1, client option :dedicated_session_channel, default true). Both connections are dialed and closed together. If the second dial fails, the session falls back to the main connection. (#193)
  • :keepalive_timeout client option, default 5_000, matching the kernel's connectedClients.staleThresholdSeconds.
  • [:chronicle, :observer, :result, :send_failed] telemetry.

Fixed

  • Reactor and reducer handlers no longer crash when sending a result fails or times out. They log the failure, reopen their stream, and the kernel redelivers the events.