Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 4 additions & 14 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,14 @@

## Summary

Fix HTTP/2 keep-alive, which was never actually enabled.
This release adds support for protobuf 7 and fixes HTTP/2 keep-alive, which was never actually enabled.

## Upgrading

<!-- Here goes notes on how to upgrade from previous versions, including deprecations and what they should be replaced with -->

## New Features

<!-- Here goes the main new features and examples or instructions on how to use them -->
- The protobuf requirement is now `>=5.29.2,<8`, allowing protobuf 7 while retaining support for protobuf 5 and 6.

## Bug Fixes

- HTTP/2 keep-alive is now actually enabled. `grpc.keepalive_time_ms` and
`grpc.keepalive_timeout_ms` were computed with `timedelta.total_seconds() * 1000`
and therefore passed as `float`. gRPC silently ignores channel arguments that are
neither `int` nor `str`, so no keep-alive pings were ever sent and a client could
only detect a dead stream through its own deadline or a teardown sent by the peer.
- HTTP/2 keep-alive is now actually enabled. `grpc.keepalive_time_ms` and `grpc.keepalive_timeout_ms` were computed with `timedelta.total_seconds() * 1000` and therefore passed as `float`. gRPC silently ignores channel arguments that are neither `int` nor `str`, so no keep-alive pings were ever sent and a client could only detect a dead stream through its own deadline or a teardown sent by the peer.

Note that keep-alive pings are answered by the nearest HTTP/2 peer. Where a proxy
terminates HTTP/2, successful pings prove that hop is alive, not the backend, so
a stream deadline is still needed to detect an orphaned upstream stream.
Note that keep-alive pings are answered by the nearest HTTP/2 peer. Where a proxy terminates HTTP/2, successful pings prove that hop is alive, not the backend, so a stream deadline is still needed to detect an orphaned upstream stream.