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 <https://github.com/grpc/grpc-java/issues/5114> 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 
   <https://github.com/grpc/grpc-java/pull/5047>)
   - core: Add missing synchronization in KeepAliveManager which fixes a 
   crash caused by a race (#5096 
   <https://github.com/grpc/grpc-java/issues/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 
   <https://github.com/grpc/grpc-java/pull/4996>)
   - core: LoadBalancer now exposes ChannelLogger for logging information 
   into ChannelTrace (#5024 <https://github.com/grpc/grpc-java/pull/5024>)
   - core: Add maxInboundMetadataSize() to ManagedChannelBuilder and 
   ServerBuilder (#4897 <https://github.com/grpc/grpc-java/pull/4897>). It 
   is now also implemented by the inprocess and okhttp transports
   - okhttp: flow control window size is configurable via 
   OkHttpChannelBuilder.flowControlWindow() (#4959 
   <https://github.com/grpc/grpc-java/pull/4959>)
   - services: implemented the stream-based “Watch” method of 
   health-checking service (#4930 
   <https://github.com/grpc/grpc-java/pull/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 <https://github.com/grpc/grpc-java/pull/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 
   <https://github.com/grpc/grpc-java/pull/4996>).
   - core: mark convenience overloads in LoadBalancer.Helper and Subchannel 
   as final, as there is no purpose in overriding them. (#4954 
   <https://github.com/grpc/grpc-java/pull/4954>)
   - core: Improved documentation of ManagedChannelBuilder.intercept's 
   execution order
   - netty: NettyChannelBuilder.maxMessageSize() is removed in favor of 
   maxInboundMessageSize() (#5054 
   <https://github.com/grpc/grpc-java/pull/5054>)

API Stabilization
   
   - services: V1alpha binlog is removed in favor of v1 (#4963 
   <https://github.com/grpc/grpc-java/pull/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 <https://github.com/grpc/grpc-java/pull/4941>) Comments 
   <https://github.com/grpc/grpc-java/issues/3982> 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 
   <https://github.com/grpc/grpc-java/pull/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 
   <https://github.com/grpc/grpc-java/pull/5037>)
   - okhttp: Pending data uses less memory by merging buffers (#5023 
   <https://github.com/grpc/grpc-java/pull/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 
   <https://github.com/grpc/grpc-java/pull/5031>). Previously it triggered 
   a NullPointerException
   - okhttp: “error in frame handler” error is now INTERNAL instead of 
   UNAVAILABLE (#5049 <https://github.com/grpc/grpc-java/pull/5049>)
   - core,netty,testing: supports receiving comma-separated multi-valued 
   binary metadata (#5020 <https://github.com/grpc/grpc-java/pull/5020>)
   - core: Name resolver error message now includes type of name resolver (
   #4928 <https://github.com/grpc/grpc-java/pull/4928>)
   - core: When SRV lookup is disabled, DNS resolution now fails with 
   helpful error message instead of “UNAVAILABLE: NameResolver returned an 
   empty list” (#4951 <https://github.com/grpc/grpc-java/issues/4951>)
   - core: For android devices, DNS cache is disabled due to known issue (
   #4962 <https://github.com/grpc/grpc-java/issues/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 
   <https://github.com/grpc/grpc-java/pull/5001>)

Acknowledgements

Thanks to all our external contributors:

   - Elliotte Rusty Harold @elharo <https://github.com/elharo>
   - Nicholas DiPiazza @nddipiazza <https://github.com/nddipiazza>
   - Rodrigo Queiro @drigz <https://github.com/drigz>
   - ST-DDT @ST-DDT <https://github.com/ST-DDT>
   - Thomas Broyer @tbroyer <https://github.com/tbroyer>
   - Yang Song @songy23 <https://github.com/songy23>

-- 
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 [email protected].
To post to this group, send email to [email protected].
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 via email to