github grpc/grpc-java v1.17.0

latest releases: v1.63.0, v1.62.2, v1.62.1...
5 years ago

Do not use this release. Its handling of gRPCLB causes problems for the ecosystem

Known Issues

Dependencies

  • Updated to OpenCensus version to 0.17.0
  • Updated to Error Prone to 2.3.2

Bug Fixes

  • Bazel build warning "unknown enum constant" is fixed (#5047)
  • core: Add missing synchronization in KeepAliveManager which fixes a crash caused by a race (#5096). This fixes the “IllegalStateException: There should be no outstanding pingFuture” exception

New Features

  • core: added service-loader-based LoadBalancerProvider/LoadBalancerRegistry. Providers are to be accessed by policy name through the registry. (#4996)
  • core: LoadBalancer now exposes ChannelLogger for logging information into ChannelTrace (#5024)
  • core: Add maxInboundMetadataSize() to ManagedChannelBuilder and ServerBuilder (#4897). It is now also implemented by the inprocess and okhttp transports
  • okhttp: flow control window size is configurable via OkHttpChannelBuilder.flowControlWindow() (#4959)
  • services: implemented the stream-based “Watch” method of health-checking service (#4930)
  • services: implemented client-side health-checking (https://github.com/grpc/proposal/blob/master/A17-client-side-health-checking.md). This issues health check RPCs from the client to avoid unhealthy backends
    • HealthCheckingLoadBalancerUtil can be used to enable health-checking on custom LoadBalancer implementations.
    • The “round_robin” balancer, when accessed through LoadBalancerRegistry, will have health-checking enabled if the application has a runtime dependency on “grpc-services”.

API Changes

  • core: Change CallCredentials.MetadataApplier from an abstract class back to an interface, as it was in 1.15.x. Introduce a new CallCredentials2.MetadataApplier that is an abstract class, instead. This is ABI incompatible with 1.16.0 but ABI compatible with 1.15.x and 1.16.1 (#5007)
  • core: LoadBalancer.Helper.runSerialized() is deprecated in favor of newly introduced getSerializationContext().
  • core/grpclb: deprecated all stock LoadBalancerFactory implementations in favor of service-loader-based LoadBalancerProvider/LoadBalancerRegistry. Instead of referencing RoundRobinLoadBalancerFactory and GrpclbLoadBalancerFactory directly, applications should access providers by their policy names, such as “round_robin” and “grpclb”.(#4996).
  • core: mark convenience overloads in LoadBalancer.Helper and Subchannel as final, as there is no purpose in overriding them. (#4954)
  • core: Improved documentation of ManagedChannelBuilder.intercept's execution order
  • netty: NettyChannelBuilder.maxMessageSize() is removed in favor of maxInboundMessageSize() (#5054)

API Stabilization

  • services: V1alpha binlog is removed in favor of v1 (#4963)

Behavior Changes

  • core: Enabling retry will automatically disable census. Note that this behavior is still subject to change in future releases as a design is needed. (#4941) Comments are welcome
  • core: SRV records are now queried by default when doing DNS lookups. SRV lookups are avoided for localhost and literal IP addresses. SRV is not looked up when running on Android
  • core: Trim trailing dot from SRV hostnames (#5006)
  • all: Now grpc java library emits binary metadata without padding in its base64 encoding (previously with padding). grpc library still supports receiving both padded and unpadded binary metadata (#5037)
  • okhttp: Pending data uses less memory by merging buffers (#5023). This can save memory when the server is applying flow control and many small messages are being sent on a streaming RPC
  • core: Improved error message for Auto-LB configuration failure (#5031). Previously it triggered a NullPointerException
  • okhttp: “error in frame handler” error is now INTERNAL instead of UNAVAILABLE (#5049)
  • core,netty,testing: supports receiving comma-separated multi-valued binary metadata (#5020)
  • core: Name resolver error message now includes type of name resolver (#4928)
  • core: When SRV lookup is disabled, DNS resolution now fails with helpful error message instead of “UNAVAILABLE: NameResolver returned an empty list” (#4951)
  • core: For android devices, DNS cache is disabled due to known issue (#4962). The DNS cache is mainly used for SRV lookup results, which aren’t performed on Android
  • Netty: NettyServer log quietly when established connection was aborted by the software in your host machine (#5001)

Acknowledgements

Thanks to all our external contributors:

Don't miss a new grpc-java release

NewReleases is sending notifications on new releases.