gRPC Java 1.17.0 Released

65 views
Skip to first unread message

Jihun Cho

unread,
Dec 5, 2018, 7:27:14 PM12/5/18
to grpc.io

gRPC Java 1.17.0 is released and available on Maven Central. JCenter hasn't picked up the new binary yet, but it should be available shortly.
You can also view the up-to-date notes on https://github.com/grpc/grpc-java/releases/tag/v1.17.0.
Known Issues

  • Bazel apps lacking a (transitive) dependency on @io_grpc_grpc_java//core:util will fail at runtime. See detail / workaround for more detail

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. (#4941Comments 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:

Eric Anderson

unread,
Dec 6, 2018, 2:01:56 PM12/6/18
to grpc-io
Please don't use 1.17.0. Wait for 1.17.1.

We discovered an issue with the gRPC LB handling that was not resolved before SRV lookup was enabled. Clients using 1.17.0 without the grpc-grpclb dependency would break when a service enables gRPC LB, even if there are fallback addresses.

We will either fix the issue or disable SRV, and then release a 1.17.1.

--
You received this message because you are subscribed to the Google Groups "grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+u...@googlegroups.com.
To post to this group, send email to grp...@googlegroups.com.
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/eca84279-96aa-4abf-a20c-40f8932eb4c3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages