Skip to content

v1.25.0

Compare
Choose a tag to compare
@zhangkun83 zhangkun83 released this 06 Nov 19:10
· 2448 commits to master since this release

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