All Versions
38
Latest Version
Avg Release Cycle
22 days
Latest Release
1289 days ago

Changelog History
Page 4

  • v1.21.0 Changes

    May 23, 2019

    Dependencies

    • ๐Ÿšš context: Removed unnecessary deps from Bazel target. gRPC depends on these deps elsewhere, so it only benefits Bazel users using context by itself
    • โฌ†๏ธ core: Upgraded to OpenCensus 0.21.0 (#5657)
    • ๐Ÿšš services: Removed dependency on re2j. Re2j is no longer used by grpc

    ๐Ÿ› Bug Fixes

    • ๐Ÿš€ stub: release server-streaming reference on request after method call (#5638). This allows the request to be garbage collected much sooner for a long-lived RPC
    • netty: ALPN negotiation failure is now properly reported as UNAVAILABLE, not UNKNOWN
    • ๐Ÿ›  okhttp: Deadlock during transport start when network became unavailable during the start up is fixed (#5567)

    API Changes

    • ๐Ÿ“ฆ api: The classes in io.grpc (not subpackages) were moved to a new artifact โ€œgrpc-apiโ€, from grpc-core (#5590). This allows using the API without bringing in as many dependencies, and makes it easier for libraries to have an optional dependency on the rest of grpc. grpc-core now depends on grpc-api. Many users should be able to depend on grpc-api instead of grpc-core if they wish. grpc-core still contains the in-process transport, io.grpc.util, and internal classes used elsewhere in grpc. Most users should still expect to have at least a transitive dependency on grpc-core.
    • api: Stabilized MethodDescriptor.Marshaller
    • api: Added NameResolverRegistry (#5586). It is now possible to construct a NameResolverProvider and register it into the global map manually. This is useful to inject dependencies into the name resolver.
    • api: add a convenience getService() method on MethodDescriptor (#5633)
    • ๐Ÿ—„ api: added a new LoadBalancer.handleResolvedAddresses() API for handling resolved addresses which includes service config explicitly (#5499). LoadBalancer.handleResolvedAddressGroups() is deprecated
    • ๐Ÿ—„ api: introduced NameResolver.Args that deprecates NameResolver.Helper. (#5664)
    • api: make LoadBalancer.Helper and Subchannel further non-thread-safe (#5718)
    • api: augment LoadBalancer.CreateSubchannelArgs with custom options (#5640)
    • ๐Ÿ—„ api: deleted ManagedChannelBuilder.loadBalancerFactory() and all deprecated factories (#5480). Use LoadBalancerRegistry and ManagedChannelBuilder.defaultLoadBalancingPolicy() instead
    • ๐Ÿ— api: changed ClientStreamTracer.StreamInfo to a final class with a builder (#5648)
    • core/util: create a ForwardingClientStreamTracer class for delegation use (#5589)
    • 0๏ธโƒฃ netty: Netty server sets default socket options for all socket-based transports. Not just NIO

    ๐Ÿ†• New Features

    • โšก๏ธ stub: optimized CPU and memory usage of the internal ThreadlessExecutor used for blocking calls (#5516)
    • stub: Improved error message on client and server when StreamObserver.onNext() is called after onCompleted() (#5656)
    • ๐Ÿง netty: Netty channel / server will now default to using Nettyโ€™s Epoll transport when able, otherwise uses Nio like before. To use epoll, it requires to have a runtime dependency netty-transport-native-epoll and epoll supported OS (linux) (#5581)
    • 0๏ธโƒฃ netty: now defers to netty for the default number of event loops, if unspecified (#5585). This should only matter when using system properties to override Nettyโ€™s defaults
    • ๐Ÿ‘‰ netty: TCP_USER_TIMEOUT is now enabled and set to the keepalive timeout if keepalive is enabled and if using the netty epoll transport (#5599). This can reduce the failure detection delay without a network cost
    • ๐ŸŒฒ okhttp: add verbose logging for OkHttp HTTP/2 frame content (#5488)
    • ๐Ÿ— auth: MoreCallCredentials now uses Credentials Builder instead of deprecated constructor to create the ServiceAccountJwtAccessCredentials used internally. This means JWT will continue to be used when the constructor is removed. Before this change the code would fall back to exchanging OAuth tokens if the constructor was not available
    • examples/android: add example for grpc running under StrictMode (#5527)

    ๐Ÿ“š Documentation

    • ๐Ÿ“š api: add note about retrying UNAVAILABLE for non-idempotent RPCs in Status documentation (#5595)

    Acknowledgements

    Thanks to all of our contributors:

  • v1.20.0 Changes

    April 10, 2019

    ๐Ÿ— Dependencies and Build Changes

    • โฌ†๏ธ Upgraded to Netty 4.1.34 and Netty TCNative 2.0.22
    • โฌ†๏ธ Upgraded to Protobuf 3.7.1
    • โฌ†๏ธ Test code upgraded to Mockito 2 (fixes #5319)
    • โœ… io.grpc:grpc-testing no longer (transitively) depends on mockito
    • ๐Ÿ‘‰ Bazel 0.23 or newer is required. This was required to support --incompatible_use_toolchain_providers_in_java_common . As of Bazel 0.24, grpc is compatible with all incompatible flags marked for migration
    • โฌ†๏ธ auth: Upgraded google-auth-library-java to 0.13.0
    • bazel: grpc_java_repositories: fix com_google_protobuf_javalite sha256. (#5456)

    ๐Ÿ› Bug Fixes

    • ๐Ÿ‘• core: suppress android lint error for javax.naming.*
    • ๐Ÿšš bom: added missing artifact (protoc-gen-grpc-java) to bom, removed grpc-compiler.
    • services/grpclb: use Stopwatch to count for LB backoff time.
    • ๐Ÿ›  core: fixed an issue that DNS JNDI does not work if there is an unavailability cause (#5500)
    • 0๏ธโƒฃ netty: fixed a memory leak due to the default grace time (#5443)
    • ๐Ÿ›  core: make the newNameResolver() change backward compatible for callers (#5564, fixes #5556)
    • ๐Ÿ›  okhttp: fixed a deadlock (#5570)
    • core: corrected config key for hedging max attempts (#5373)
    • โšก๏ธ grpclb: keep track of state updates for cached Subchannels. (#5441)

    ๐Ÿ†• New Features

    • bazel: created bazel targets for grpc-services (#5384)
    • ALTS: added ComputeEngineChannelBuilder (#5473)
    • ๐Ÿ— okhttp: add socketFactory method to channel builder (#5378)
    • 0๏ธโƒฃ grpclb: now supports "pick_first" child policy in addition to the default "round_robin" (#5438)

    Behavior Changes

    • grpclb: use fallback addresses if no balancer address is given (#5445)

    API Changes

    • ๐Ÿ—„ core: Deprecated ClientStreamTracer.Factory#newClientStreamTracer is now deleted(#5377)
    • core: NameResolver no longer needs to be thread-safe (#5364)
    • core: Added ManagedChannelBuilder.defaulServiceConfig() and disableServiceConfigLookUp()
    • ๐Ÿ—„ core: deprecated LoadBalancer.Helper#getNameResolverFactory (#5418)

    ๐Ÿ“š Documentation

    • โšก๏ธ COMPILING.md: updated document for codegen plugin compilation instruction.
    • ๐Ÿ”’ SECURITY.md: document that tcnative/ALPN works on Alpine. It is unclear how long Alpine has been capable of working
    • ๐Ÿ‘ examples: add an example of server-side compression support (#5358)

    Acknowledgments

    Thanks to all of our contributors:

  • v1.19.0 Changes

    February 28, 2019

    ๐Ÿ— Dependencies and Build Changes

    • โฌ†๏ธ Upgraded to protobuf 3.6.1 (#5320)
    • ๐Ÿ—„ Google App Engine Java 7 is no longer supported, as it was shut down. Java 8 is supported.
    • โฌ†๏ธ Upgraded Guava to 26.0-android
    • โž• Add "fake" Bazel dependency on Guava's failureaccess to fix dependency handling issue in maven_jar (#5350)
    • โฌ†๏ธ Upgraded OpenCensus to v0.19.2 (#5329)

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed Service Config DNS parsing to match specification (Service Config is still off by default) (#5293)
    • OkHttp no longer spams NPE when connecting to a server that's down (#5260)
    • Context avoids leaking ClassLoader through a ThreadLocal (#5290)
    • Status is now preserved when getting a RST_STREAM with no error (#5264)
    • โœ‚ Removed Channel reference from ManagedChannelWrapper to avoid a memory leak (#5283)
    • Avoid NPE in Cronet after the transport has shutdown (#5275)
    • ๐Ÿ›  Fixed a channel panic caused by calling NameResolver.refresh() (#5223)

    ๐Ÿ†• New Features

    • ๐Ÿ†• New artifact grpc-bom is added (#5209)
    • Each ManagedChannel can now have its own ProxyDetector (#5173)

    Behavior Changes

    • 0๏ธโƒฃ If enabled, health checking defaults to SERVING if the name unspecified (#5274)
    • Graceful Netty server shutdown now issues two GOAWAYs (#5351)
    • Client-side health checking now warns if disabled (#5261)

    API Changes

    • Removed DEFAULT_CONNECTION_SPEC from OkHttpChannelBuilder (#5309)
    • NettyChannelBuilder now accepts a channelFactory (#5312)
    • ๐Ÿ‘ NettyServerBuilder supports listening on multiple sockets (#5306)
    • CallCredentials is now preferred over CallCredentials2 (#5216)
    • ProxiedSocketAddress is added as an Experimental API (#5344)
    • โž• Added NameResolver.Helper, for use with new NameResolver.newNameResolver() overload (#5345)
    • ๐Ÿ—„ Deprecated previous NameResolver.newNameResolver() overload (#5345)

    ๐Ÿ“š Documentation

    Acknowledgments

    Thanks to all of our contributors:

  • v1.18.0 Changes

    January 15, 2019

    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

  • v1.17.2 Changes

    December 18, 2018

    ๐Ÿš€ This release is only available as a GitHub tag, no artifacts are shipped to the Maven central repository. If you do not build your project with Bazel, you should still choose v1.17.1.

    ๐Ÿ› Bug Fixes

    • โœ‚ Removed usage of the deprecated native.http_archive rule that does not work with Bazel 0.20.0 (#5156)
  • v1.17.1 Changes

    December 10, 2018

    ๐Ÿ› Bug Fixes

    • Bazel users should no longer see โ€œjava.util.ServiceConfigurationError: io.grpc.LoadBalancerProvider: Provider io.grpc.util.SecretRoundRobinLoadBalancerProvider$Provider not foundโ€. The workaround for 1.17.0 to add a dependency on @io_grpc_grpc_java//core:util is no longer necessary (#5114)

    Behavior Changes

    • โช core: SRV records are no longer queried by default when doing DNS lookups. This restores the 1.16.x behavior. This avoids a bug which would in the future make it hard for existing services to enable gRPC LB (#5131)
  • v1.17.0 Changes

    December 06, 2018

    Do not use this release. Its handling of gRPCLB causes problems for the ecosystem

    Known Issues

    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)
    • ๐Ÿ”€ core: Add missing synchronization in KeepAliveManager which fixes a crash caused by a race (#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)
    • ๐ŸŒฒ core: LoadBalancer now exposes ChannelLogger for logging information into ChannelTrace (#5024)
    • ๐Ÿ“‡ core: Add maxInboundMetadataSize() to ManagedChannelBuilder and ServerBuilder (#4897). It is now also implemented by the inprocess and okhttp transports
    • ๐Ÿ”ง okhttp: flow control window size is configurable via OkHttpChannelBuilder.flowControlWindow() (#4959)
    • services: implemented the stream-based โ€œWatchโ€ method of health-checking service (#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)
    • ๐Ÿ—„ 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).
    • core: mark convenience overloads in LoadBalancer.Helper and Subchannel as final, as there is no purpose in overriding them. (#4954)
    • ๐Ÿ“š core: Improved documentation of ManagedChannelBuilder.intercept's execution order
    • ๐Ÿšš netty: NettyChannelBuilder.maxMessageSize() is removed in favor of maxInboundMessageSize() (#5054)

    API Stabilization

    • ๐Ÿšš services: V1alpha binlog is removed in favor of v1 (#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) Comments are welcome
    • 0๏ธโƒฃ 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)
    • ๐Ÿ“‡ 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)
    • ๐Ÿ”€ okhttp: Pending data uses less memory by merging buffers (#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). Previously it triggered a NullPointerException
    • okhttp: โ€œerror in frame handlerโ€ error is now INTERNAL instead of UNAVAILABLE (#5049)
    • ๐Ÿ“‡ core,netty,testing: supports receiving comma-separated multi-valued binary metadata (#5020)
    • core: Name resolver error message now includes type of name resolver (#4928)
    • core: When SRV lookup is disabled, DNS resolution now fails with helpful error message instead of โ€œUNAVAILABLE: NameResolver returned an empty listโ€ (#4951)
    • core: For android devices, DNS cache is disabled due to known issue (#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)

    Acknowledgements

    Thanks to all our external contributors:

  • v1.16.1 Changes

    October 26, 2018

    API Changes

    • ๐Ÿ“‡ 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 (#5007)