Repository navigation
Release v3.15.1
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, defaulttrue). Both connections are dialed and closed together. If the second dial fails, the session falls back to the main connection. (#193) :keepalive_timeoutclient option, default5_000, matching the kernel'sconnectedClients.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.