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 (not round-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