Skip to content

v1.18.0

Compare
Choose a tag to compare
@dapengzhang0 dapengzhang0 released this 15 Jan 19:30
· 3379 commits to master since this release

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)
  • 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