v1.29.0
Behavioral Changes
- core, grpclb: change policy selection strategy for Grpclb policy (move logic of querying SRV into Grpclb's own resolver) (#6723). System property
io.grpc.internal.DnsNameResolverProvider.enable_grpclb
is eliminated, grpc-grpclb dependency implicitly enables querying SRV records since v1.24.2
New Features
- core:
ServerInterceptors.useInputStreamMessages()
now preserves theKnownLength
interface when wrapping InputStream (#6852). This should prevent certain optimizations from being disabled when using useInputStreamMessages - core:
ServerInterceptors.useInputStreamMessages()
anduseMarshalledMessages()
now preserve the SchemaDescriptor, so the methods are now compatible with the reflection service (#6851)
Bug Fixes
- core: Fix IllegalStateException if remote-specified decompressor is unknown (#6864)
- core: keep round_robin lb subchannel in TRANSIENT_FAILURE until becoming READY (#6657). This avoids RPC being indefinitely queued when subchannels are bouncing back and forth between CONNECTING and TRANSIENT_FAILURE
- netty: fixed a bug when grpc-netty and grpc-netty-shaded were both used, which could result in "ClassCastException: io.netty.util.AsciiString cannot be cast to io.grpc.netty.shaded.io.netty.util.AsciiString" (#6765)
- netty: Prevent thread interruption during server start from leaking socket (#6867)
- core: A Java 9+ ABI compatibility issue with java.nio.ByteBuffer is fixed (#6839). This only impacted users manually compiling grpc-java with JDK 9+ and then using it as a library for applications that run with JDK 8- (e.g., on Android). This does not impact the pre-built JARs on Maven Central
- core: fixed a bug in health check config propagation. (#6804)
- benchmarks: some netty benchmarks failed to start and are now fixed (#6877). This was a regression introduced in v1.23.0
Documentation
- Add Javadoc for grpc-services and grpc-grpclb to the grpc-all project. This increases the number of classes shown at https://grpc.io/grpc-java/javadoc/
- examples: Add a JWT authentication example (#5915)
Dependencies
- Bump guava to 28.2-android (#6772)
- Bump netty to 4.1.48.Final, bump tcnative to 2.0.30.Final (#6845)
- Bump truth version to 1.0.1 (#6754)
Compiling
- android: add grpc-android into main build (#6793). Compiling with
-PskipAndroid=false
(default) includes building grpc-android module, which requires Android SDK
Acknowledgements
@chrisschek
@elharo Elliotte Rusty Harold
@herbyderby Chris Nokleberg
@markb74
@ST-DDT