v1.18.0
Dependencies
- Downgraded to Guava 25.1 to ease gRPC upgrade for users of Beta APIs broken in Guava 26. We’re planning to upgrade in gRPC-java v1.19.0
- Upgraded to Netty 4.1.32 and Netty TCNative 2.0.20
- Upgraded to OpenCensus 1.18.0
Bug Fixes
- core: Fixed typo in deprecation warning in RoundRobinLoadBalancerFactory (#5117). The balancer has the name
round_robin
in the registry (notround-robin
) - core: Fixed a bug where CallOptions#withOption() mutates original instance if existing key is overwritten (#5142)
- stub: on server-side, disable cancellation exception from StreamObserver.onNext if onCancelHandler set (#5061). When using onCancelHandler, this makes it so that grpc’s implementations of StreamObserver.onNext never throw a StatusRuntimeException
- stub: make sure
StreamObservers.copyWithFlowControl()
only calls onComplete once (#4558) - okhttp: Fixed Android out of memory upon network disconnect (#4860). Applications sending many small messages on a single stream may see much lower memory use
- bazel: Corrected re2j SHA in repositories.bzl
- bazel: Use new http_archive rule instead of the deprecated native.http_archive (#5104)
- alts: Fixed inactivity-triggered shutdown of netty event loop causing future Channels to enter panic mode
New Features
- Deadlines have a more readable toString() representation
- core: User can now register custom LoadBalancerProviders into LoadBalancerRegistry (#5070)
- core: ManagedChannelBuilder can now specify the default load-balancing policy by name (#5135)
- core: Added hedging support specified by the retry spec. Calling ManagedChannelBuilder.enableRetry() will enable ordinary retry as well as hedging. Caveat: Retry/hedging need to consume a service config with retry/hedging policies, but currently grpc-java library did not provide an effective way/API to produce a service config locally or from name resolver yet
- core: LoadBalancer can now trigger name resolution refresh (#5121)
- core: the new LoadBalancingConfig field from Service Config is now supported (#5073)
- core: LoadBalancer can opt-in to receive empty address list from NameResolver (#5148)
- core: ClientStreamTracer can intercept trailing metadata (#5088)
- core: Record real-time metrics (reported on a per-message basis) to OpenCensus (#5099)
- netty: Fixed client-side support for h2c via Upgrade (#4518). This is still a second-class negotiation mechanism as it lacks good tests and is rarely used
API Changes
- HealthStatusManager can go permanently unhealthy to aid in server shutdown
Documentation
- examples: Added JWT authentication and Google Cloud Authentication examples
Acknowledgements
Thanks to all our external contributors:
Arnout Engelen @raboof
Brendan Linn @Ubehebe
David Hoover @deadmoose
Grant Oakley @groakley
Rodrigo Queiro @drigz
ST-DDT @ST-DDT
Thomas Broyer @tbroyer
Venil Noronha @venilnoronha
Ze'ev Klapow @zklapow