gRPC v1.33.0 Release Notes

Release Date: 2020-10-21 // almost 2 years ago
  • API Changes

    • netty: The class io.grpc.netty.NettyServerBuilder is no longer a subclass of the internal class io.grpc.internal.AbstractServerImplBuilder
    • netty: The class io.grpc.netty.NettyChannelBuilder is no longer a subclass of the internal class io.grpc.internal.AbstractManagedChannelImplBuilder
    • okhttp: The class io.grpc.okhttp.OkhttpChannelBuilder is no longer a subclass of the internal class io.grpc.internal.AbstractManagedChannelImplBuilder
    • core: The class io.grpc.inprocess.InProcessChannelBuilder is no longer a subclass of the internal class io.grpc.internal.AbstractManagedChannelImplBuilder
    • cronet: The class io.grpc.cronet.CronetChannelBuilder is no longer a subclass of the internal class io.grpc.internal.AbstractManagedChannelImplBuilder
    • πŸ— api: Add ForwardingServerBuilder: a ServerBuilder that delegates to another builder by default
    • core: Add accessor for bare method name in MethodDescriptor (#7339)
    • πŸ‘» stub: On server-side when an RPC is cancelled, only throw StatusRuntimeException: CANCELLED from onNext() for streaming responses. Previously the exception was also thrown from onNext() for unary responses and from onComplete(), which didn’t help the server avoid unnecessary processing
    • okhttp: OkHttpChannelBuilder made final and can no longer be anonymous
    • πŸ—„ api, core: delete io.grpc.LoadBalancer.loadBalancingConfig attribute (#7440). The attribute was deprecated in v1.27.0, now it is completely deleted.

    πŸ†• New Features

    • πŸ‘ netty: Add support for IBMJSSE2 (#7422)

    πŸ“š Documentation

    • πŸ“š API documentation (Javadoc) for Server and Channel builders now correctly displays inherited methods and the class hierarchy

    πŸ› Bug Fixes

    • πŸ›  grpclb: Fixed a bug that RPC might be hanging when using grpclb balancer as a child balancer in a hierarchical load balancer tree (#7434)
    • netty: TCP close during TLS handshake should be UNAVAILABLE, not UNKNOWN
    • netty: BDP ping accounting should occur after flow control. This resolves an incompatibility issue introduced in v1.30.0 and could be worked around via GRPC_EXPERIMENTAL_AUTOFLOWCONTROL=false introduced later. The symptom was a GOAWAY with β€œtoo_many_pings” without an aggressive keepalive configured. The environment variable is still available, but will be removed in the future

    Behavior Changes

    • xds: Xds server channel credential option will be required in the xDS bootstrap file. Use {"type":"insecure"}” for plaintext (#7396)

    Dependencies

    • πŸ— benchmarks: Removed -javaagent jvm option in CreateStartScripts, to allow running the benchmarks without building from source
    • ⬆️ Upgrade Conscrypt to 2.5.1
    • πŸ‘ bazel: Remove Maven repositories from repositories.bzl, in favor of maven_install. v1.27.0 introduced support for maven_install and encouraged users to migrate. See examples/WORKSPACE for an example. maven_install dramatically reduces the boilerplate for maven dependencies and properly handles transitive dependencies and version selection. gRPC is not yet using the @maven workspace, so it is still possible to use other dependency tools.
    • ⚑️ Update protobuf gradle plugin version to 0.8.13 (#7355)

    Acknowledgements

    @codeblooded Benjamin Reed
    @kiwi1969 Russell Shaw
    @pkern Philipp Kern