gRPC v1.18.0 Release Notes
Release Date: 2019-01-15 // over 5 years ago-
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)
- 0️⃣ 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