gRPC v1.34.0 Release Notes

Release Date: 2020-12-02 // 11 months ago
  • πŸš€ gRPC Java 1.34.0 Release Notes

    API Changes

    api: added io.grpc.ForwardingServerBuilder (#7633)

    πŸ†• New Features

    • βž• Added ChannelCredentials and ServerCredentials. They are safe for production but are Experimental APIs to resolve issues discovered as they see usage. The rationale and description of the new API can be found in gRFC L74. In short, these APIs are intended to β€œreplace” the implicit security defaults of channels/servers as well as the usePlaintext() and useTransportSecurity() methods on the channel and server builders. The previous APIs are stable so will not be removed, but are expected to be deprecated in the future. Since these new APIs will be widely used, we encourage users to try the APIs out and report any problems experienced so they can be corrected before the APIs become stable (#7294, #7601)
    • πŸ‘ As part of ChannelCredentials and ServerCredentials there are now XdsChannelCredentials and XdsServerCredentials added that can be used to enable use of XDS provided credentials on the channel and server. A File-watcher certificate provider has been implemented to support these Xds Credentials. The example in example-xds has been enhanced to be a full xDS example with XdsChannelCredentials and XdsServerCredentials to illustrate their usage. (#7497, #7636)
    • πŸ‘ xds: added support for setting bootstrap file with java system property (#7620)

    πŸ› Bug Fixes

    • πŸ‘» netty: abrupt GOAWAY should not cause INTERNAL status. It is now UNAVAILABLE. This was a regression introduced in v1.33.0. The error was in the form StatusRuntimeException: INTERNAL: http2 exception with a cause similar to Http2Exception$StreamException: Cannot create stream 222691 greater than Last-Stream-ID 222689 from GOAWAY. This was mainly observed when a C core-based gRPC server shut down. (#7501)
    • πŸš€ core, netty, okhttp, cronet: fixed builders ABI backward compatibility broken in v1.33.0 (#7552). For details, see v1.33.1 release note.
    • core: round robin should ignore name resolution error for channel state change when there are READY subchannels (#7595). Previously the round_robin load balancing policy puts the Channel into TRANSIENT_FAILURE if encountering name resolution failures even if it has received usable addresses.
    • πŸ›  core: fixed floating-point number formatting Locale in error messages (#7473)
    • android: make Channel always enterIdle() upon network recover (#7611). This is for AndroidChannelBuilder. It avoids failing new RPCs prematurely when the device detects the network has recovered while resuming connections.
    • ⏱ xds: only reschedule time for unresolved resources upon ADS stream restarts (#7582). The management server can choose not to send resources it has previously sent when the RPC stream is recreated. So the client will keep using resources it has saved previously.
    • alts: create handshaker RPC lazily (#7630). Previously the handshake RPCs start before the TCP connection is established, which might be leaked forever if the connection is never established.

    πŸ“š Documentation

    • api: added implementation note regarding server interceptors and thread locals (#7482)
    • api: clarify expectations regarding ServerCall#close (#7580)

    Behavior Changes

    • netty: differentiate GOAWAY closure status descriptions (#7502). Previously many different GOAWAY-related errors all produced the same status description. Now they each should use their own specific description which should allow distinguishing between issues like weak server GOAWAY behavior, MAX_CONCURRENT_STREAMS interfering with eager transport selection, and local races. We now also use UNAVAILABLE in more cases, although the cases that benefit should be rare
    • πŸ‘ xds: added support case insensitive path matching (#7506). The xDS traffic splitting now supports the case-insensitive option for path matching.
    • 0️⃣ alts: add a timeout to AltsHandshakerStub. A default of 20 seconds is used (#7589)

    Dependencies

    • all: bumped google auth libraries to version 0.22.0 (#6652)

    Acknowledgements

    @attila123
    @erikjoh
    @jbdeboer
    @ST-DDT
    @sullis
    @susinmotion


Previous changes from v1.33.1

  • πŸš€ gRPC Java 1.33.1 Release Notes

    πŸ› Bug Fixes

    • πŸ›  Fix builders ABI backward compatibility broken in v1.33.0, see #7552
      • netty: The class io.grpc.netty.NettyServerBuilder reverted to extend internal class io.grpc.internal.AbstractServerImplBuilder
      • netty: The class io.grpc.netty.NettyChannelBuilder reverted to extend internal class io.grpc.internal.AbstractManagedChannelImplBuilder
      • okhttp: The class io.grpc.okhttp.OkhttpChannelBuilder reverted to extend internal class io.grpc.internal.AbstractManagedChannelImplBuilder
      • core: The class io.grpc.inprocess.InProcessChannelBuilder reverted to extend internal class io.grpc.internal.AbstractManagedChannelImplBuilder
      • cronet: The class io.grpc.cronet.CronetChannelBuilder reverted to extend internal class io.grpc.internal.AbstractManagedChannelImplBuilder
    • βͺ api: ForwardingServerBuilder reverted until the permanent fix of the issue with ABI compatibility of delegating classes
    • okhttp: exclude Internal* from javadoc
    • πŸ‘» netty: Abrupt GOAWAY should not cause INTERNAL status. It is now UNAVAILABLE. This was a regression introduced in v1.33.0. The error was in the form StatusRuntimeException: INTERNAL: http2 exception with a cause similar to Http2Exception$StreamException: Cannot create stream 222691 greater than Last-Stream-ID 222689 from GOAWAY. This was mainly observed when a C core-based gRPC server shut down.
    • core: fix floating-point number formatting Locale