Skip to content

v1.42.0

Compare
Choose a tag to compare
@sergiitk sergiitk released this 05 Nov 21:37
· 1195 commits to master since this release

In this release we drop support for Android API level 18 or lower (Jelly Bean or earlier), following Google Play Service’s discontinued updates for Jelly Bean (API levels 16, 17 & 18).

API Changes

  • xds: Added XdsServerBuilder.overrideBootstrapForTest() to provide bootstrap override for testing purposes. This way, the test does not need to use the shared environment variable for bootstrap injection. (#8575)
  • api: Stabilize the Status.asException(Metadata) method. (#8520)
  • core/auth: Remove CallCredentials2 (#8572). CallCredentials2 was introduced in 1.16.0 to ease migration of CallCredentials to an abstract class. CallCredentials has been preferred over CallCredentials2 since 1.19.0

Bug Fixes

  • netty: Requests with Connection header are malformed. This is required per HTTP/2. The server now rejects such requests. To improve debuggability for clients, Metadata.Key will log if creating a key for “Connection”
  • grpclb: Fix “IllegalStateException: already in fallback” channel panic, by not starting fallback timer if already in fallback (#8646). This builds on the fix in 1.38.1. The bug was introduced in 1.38.0.
  • core, netty, okhttp: Fix AbstractManagedChannelImplBuilder#maxInboundMessageSize(int) ABI (#8607). Solves the issue with NettyChannelBuilder.maxInboundMessageSize(int) and OkHttpChannelBuilder.maxInboundMessageSize(int) not working in rare cases when pre-1.33 builds combined with post-1.33. See issue #8313 for the details.

New Features

  • binder: A new transport with channel and server builders which support cross-process and cross-application communication on Android. BinderChannel is production ready and in use by several Google applications, though the APIs are still experimental and subject to change. It does not currently support rpc-level flow control for streaming RPCs. See gRFC L73 for background.
  • xds: implemented rbac filter per A41 xDS RBAC. This is the first HTTP filter supported on server-side.
  • stub: add ServerCallStreamObserver.setOnCloseHandler(Runnable). Notified when gRPC has completed processing the RPC. (#8452)

Behavior Changes

  • core: gRPC-Java library discards any Content-Length header set by the application because in most cases this header is blindly forwarded from some other source and is incorrect for gRPC payload.
  • netty: Use Host header on server-side if :authority is not present
  • rls: the cache_size in route lookup config is limited to 5M
  • core: changed the level mapping ChannelLogger uses for java.util.logging.Level (#8531). It is now possible to enable Java logging for Channelz’s INFO without also enabling DEBUG (previously they were both FINEST).

Dependencies

  • Compatibility with the upcoming Bazel 5 added. This required dropping support for Bazel 1-3. Bazel 4 or later is required (#7598)
  • netty: bump netty to 4.1.63.Final and tcnative to 2.0.38.Final. (#8167)

Improvements

  • core: io.grpc.util.AdvancedTlsX509KeyManager and AdvancedTlsX509TrustManager support loading configuration from static files. (#8525)
  • core: io.grpc.util.CertificateUtils.getPrivateKey() now supports RSA and EC key algorithms