All Versions
27
Latest Version
Avg Release Cycle
35 days
Latest Release
43 days ago

Changelog History
Page 1

  • v1.29.0

    April 22, 2020

    πŸš€ gRPC Java 1.29.0 Release Notes

    Behavioral Changes

    • 🚚 core, grpclb: change policy selection strategy for Grpclb policy (move logic of querying SRV into Grpclb's own resolver) (#6723). System property io.grpc.internal.DnsNameResolverProvider.enable_grpclb is eliminated, grpc-grpclb dependency implicitly enables querying SRV records since v1.24.2

    πŸ†• New Features

    • core: ServerInterceptors.useInputStreamMessages() now preserves the KnownLength interface when wrapping InputStream (#6852). This should prevent certain optimizations from being disabled when using useInputStreamMessages
    • core: ServerInterceptors.useInputStreamMessages() and useMarshalledMessages() now preserve the SchemaDescriptor, so the methods are now compatible with the reflection service (#6851)

    πŸ› Bug Fixes

    • core: Fix IllegalStateException if remote-specified decompressor is unknown (#6864)
    • core: keep round_robin lb subchannel in TRANSIENT_FAILURE until becoming READY (#6657). This avoids RPC being indefinitely queued when subchannels are bouncing back and forth between CONNECTING and TRANSIENT_FAILURE
    • πŸ›  netty: fixed a bug when grpc-netty and grpc-netty-shaded were both used, which could result in "ClassCastException: io.netty.util.AsciiString cannot be cast to io.grpc.netty.shaded.io.netty.util.AsciiString" (#6765)
    • netty: Prevent thread interruption during server start from leaking socket (#6867)
    • πŸ‘€ okhttp: fix incorrect connection-level flow control handling at beginning of connection (#6742). This only impacted users of OkHttpChannelBuilder.flowControlWindow(), who seem to be few since this bug was not reported sooner
    • πŸ›  core: A Java 9+ ABI compatibility issue with java.nio.ByteBuffer is fixed (#6839). This only impacted users manually compiling grpc-java with JDK 9+ and then using it as a library for applications that run with JDK 8- (e.g., on Android). This does not impact the pre-built JARs on Maven Central
    • πŸ›  core: fixed a bug in health check config propagation. (#6804)
    • πŸ›  benchmarks: some netty benchmarks failed to start and are now fixed (#6877). This was a regression introduced in v1.23.0

    πŸ“š Documentation

    • βž• Add Javadoc for grpc-services and grpc-grpclb to the grpc-all project. This increases the number of classes shown at https://grpc.io/grpc-java/javadoc/
    • examples: Add a JWT authentication example (#5915)

    Dependencies

    • ⬆️ Bump guava to 28.2-android (#6772)
    • ⬆️ Bump netty to 4.1.48.Final, bump tcnative to 2.0.30.Final (#6845)
    • ⬆️ Bump truth version to 1.0.1 (#6754)

    Compiling

    • πŸ— android: add grpc-android into main build (#6793). Compiling with -PskipAndroid=false (default) includes building grpc-android module, which requires Android SDK

    Acknowledgements

    @chrisschek
    @elharo Elliotte Rusty Harold
    @herbyderby Chris Nokleberg
    @markb74
    @ST-DDT

  • v1.28.1

    April 03, 2020

    πŸ› Bug Fixes

    • xds: implement more clear specifications for locality filtering (allow localities with 0 endpoint, ignore localities with 0 weight, check for locality priority continuity). (#6875)
  • v1.28.0

    March 10, 2020

    πŸš€ gRPC Java 1.28.0 Release Notes

    API Changes

    • core: service config parsing now validates the final config object via LoadBalancerProvider#parseLoadBalancingPolicyConfig. LoadBalancer developers should use parsed config(loadBalancingPolicyConfig) in ResolvedAddresses instead of deprecated attribute io.grpc.LoadBalancer.ATTR_LOAD_BALANCING_CONFIG.
    • 🚚 core: remove stickiness from round robin (#6698)

    Behavioral Changes

    • core, grpclb: change policy selection strategy for Grpclb policy (take one: eliminate special logic for deciding grpclb policy in core) (#6637)
      • gRPCLB policy selection is being stabilized according to this gRFC. gRPCLB policy will not be automatically selected even if there are SRV addresses resolved. You need to explicitly specify the selection by service config (in TXT records, or via ManagedChannelBuilder#defaultServiceConfig or ManagedChannelBuilder#defaultLoadBalancingPolicy).

    πŸ†• New Features

    • πŸš€ This release adds an experimental client side implementation of xDSv2 APIs. This allows a gRPC client written in Java to receive configuration from an xDSv2 API compatible server and use that configuration to load balance RPCs. In this release, only the virtual host matching and cluster route action is supported. More features will be added in future.

    πŸ› Bug Fixes

    • netty: fix a deadlock on start gRPC server (#6601)
    • netty: negotiated application level protocol is now checked against the correct ALPN list in the SslContext settings
    • okhttp: fix incorrect connection-level flow control handling at beginning of connection.
    • alts: Fix using the wrong way of checking if Conscrypt is available (#6672)
    • πŸ‘» grpclb: grpclb can handle empty address from LoadBalancer instead of throwing exception
    • alts: do not exclude opencensus-api from google-oauth2's transitive dependencies (#6607)
      • grpc-alts was broken since 1.27.0 release for missing opencensus-api used in google-oauth2. This was due to opencensus-api dependency was eliminated from grpc-core. Now it should be included.

    πŸ“š Documentation

    • stub,examples: Clarify CallStreamObserver's Javadoc (#6561)

    Dependencies

    • ⬆️ Bump Netty to 4.1.45.Final and tcnative to 2.0.28.Final
    • ⬆️ Bump okhttp to 2.7.4
    • ⬆️ Bump google-auth-library-credentials and google-auth-library-oauth2-http to 0.20.0

    Acknowledgements

    @chrisschek
    @cushon Liam Miller-Cushon
    @elharo Elliotte Rusty Harold
    @gfelbing Georg Welzel
    @hatahet Ziad Hatahet
    @leventov Roman Leventov
    @sourabhsparkala Sourabh Sarvotham Parkala
    @ZhenLian Zhen Lian

  • v1.27.2

    February 26, 2020

    πŸ› Bug Fixes

    • πŸ‘» grpclb: grpclb can handle empty address from LoadBalancer instead of throwing exception
  • v1.27.1

    February 13, 2020
  • v1.27.0

    January 28, 2020
  • v1.26.1

    February 12, 2020
  • v1.26.0

    December 18, 2019
  • v1.25.0

    November 06, 2019

    Dependencies

    • ⬆️ Bumped netty to 4.1.42
    • Bumped error_prone_annotations to 2.3.3
    • ⬆️ Bumped perfmark to 0.19.0
    • ⬆️ Bumped guava to 28.1
    • ⬆️ Bumped gson to 2.8.5
    • ⬆️ Bumped protobuf to 3.10.0
    • βœ… Tests bumped truth to 1.0

    πŸ› Bug Fixes

    • Rolled forward the fix for β€œClientCall.Listener.onClose never called when the call is interrupted” (#6255)
    • πŸ›  netty: fixed the bug that users using proxy may experience hang when starting channel (#6159)
    • πŸ›  alts: fixed potential memory leak when alts negotiation is aborted (#6186)
    • πŸ›  alts: fixed wrong ComputeEngineChannelBuilder class signature (#6367)
    • bom: now specifying pom type for protoc-gen-grpc-java (#6247)
    • ⚠ netty: Check for TE: trailers header after checking Content-Type. This prevents confusing warnings when a non-grpc client contacts a grpc server
    • bazel: Fixed typo in repositories.bzl for maven_install override_targets; io.grpc:grpc-core was pointing to a non-existent target name
    • πŸ›  okhttp: fixed header scheme that did not match transport type (#6264). OkHttp users using plaintext may experience errors when communicating with dotnet gRPC server is fixed.

    API Changes

    • api: MethodDescriptor’s safe and idempotent methods are now considered stable and set appropriately by the generated code when the proto contains the RPC option option idempotency_level = NO_SIDE_EFFECTS; or option idempotency_level = IDEMPOTENT;. grpc-java is not using these values directly, but interceptors are free to observe them
    • protobuf: StatusProto.fromStatusAndTrailers fall-back to status if trailers are not available (#6278). Previously it returned null
    • bazel: Removed deps from grpc_java_repositories() that protobuf_deps() provides
    • ManageChannelBuilder.usePlaintext() (with no argument) is now stabilized.

    πŸ†• New Features

    • okhttp: add full implementation of HPACK header compression (#6026). Patched HTTP header compression implementation for writer from OkHttp3, which was missing in OkHttp2.
    • bazel: added support for --incompatible_load_cc_rules_from_bzl and --incompatible_load_proto_rules_from_bzl
    • netty: Implicitly use Conscrypt when it is available and is necessary. If tcnative is not available and the JVM is Java 7 or 8, then grpc will use Conscrypt if present. This allows using Conscrypt by just adding Conscrypt to the classpath
    • πŸš€ alts: Use Conscrypt when available. This provides Java 7 support and gives a huge performance boost on Java 8. Java 7 update 121 and Java 8 update 111 (released three years ago) are required.
    • api: Add EquivalentAddressGroup.ATTR_AUTHORITY_OVERRIDE which allows NameResolvers to specify different names for different backends within one Channel which may be especially useful for certain TLS deployments (#6126). Note that NameResolvers must receive the authority names from a trusted source (e.g., local file, remote server with TLS)
    • core: Propagate EquivalentAddressGroup Attributes in RoundRobinLoadBalancer. This allows NameResolvers to set attributes like ATTR_AUTHORITY_OVERRIDE with round robin
    • api: Added ManagedChannelBuilder.offloadExecutor() for expensive or blocking operations like DNS resolution. Previously an internal executor was used that couldn’t be overridden. The executor is also passed to NameResolvers via Args.getOffloadExecutor()
    • πŸ‘€ grpclb: Add dns NameResolver to io.grpc.grpclb that has SRV record lookup enabled by default (#6298). This allows using grpclb without the -Dio.grpc.internal.DnsNameResolverProvider.enable_grpclb=true system property. Note that grpclb is still experimental and deprecated. In particular, we plan to change grpclb policy selection which together with this change provides a path forward for grpclb to function without custom support in grpc-core; see gRFC A26

    Acknowledgements

  • v1.24.2

    November 06, 2019

    Dependencies

    • ⬆️ Bumped perfmark to 0.19.0
    • Bumped error_prone_annotations to 2.3.3

    πŸ› Bug Fixes

    • πŸ›  alts: fixed wrong ComputeEngineChannelBuilder class signature (#6381)

    πŸ†• New Features

    • πŸ‘€ grpclb: Add dns NameResolver to io.grpc.grpclb that has SRV record lookup enabled by default (#6298). This allows using grpclb without the -Dio.grpc.internal.DnsNameResolverProvider.enable_grpclb=true system property. Note that grpclb is still experimental and deprecated. In particular, we plan to change grpclb policy selection which together with this change provides a path forward for grpclb to function without custom support in grpc-core; see gRFC A26