gRPC v1.29.0 Release Notes

Release Date: 2020-04-22 // about 4 years ago
  • 🚀 gRPC Java 1.29.0 Release Notes

    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 the KnownLength interface when wrapping InputStream (#6852). This should prevent certain optimizations from being disabled when using useInputStreamMessages
    • core: ServerInterceptors.useInputStreamMessages() and useMarshalledMessages() 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)
    • 👀 okhttp: fix incorrect connection-level flow control handling at beginning of connection (#6742). This only impacted users of OkHttpChannelBuilder.flowControlWindow(), who seem to be few since this bug was not reported sooner
    • 🛠 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