v1.33.0
This release broke ABI in a non-planned way for NettyServerBuilder, NettyChannelBuilder, and similar. See #7552. If you are impacted, please use an earlier version until v1.33.1 is available. A future ABI breakage may be necessary, but will be communicated explicitly at that time.
API Changes
- netty: The class
io.grpc.netty.NettyServerBuilder
is no longer a subclass of the internal classio.grpc.internal.AbstractServerImplBuilder
- netty: The class
io.grpc.netty.NettyChannelBuilder
is no longer a subclass of the internal classio.grpc.internal.AbstractManagedChannelImplBuilder
- okhttp: The class
io.grpc.okhttp.OkhttpChannelBuilder
is no longer a subclass of the internal classio.grpc.internal.AbstractManagedChannelImplBuilder
- core:
The class io.grpc.inprocess.InProcessChannelBuilder
is no longer a subclass of the internal classio.grpc.internal.AbstractManagedChannelImplBuilder
- cronet: The class
io.grpc.cronet.CronetChannelBuilder
is no longer a subclass of the internal classio.grpc.internal.AbstractManagedChannelImplBuilder
- api: Add ForwardingServerBuilder: a ServerBuilder that delegates to another builder by default
- core: Add accessor for bare method name in MethodDescriptor (#7339)
- stub: On server-side when an RPC is cancelled, only throw
StatusRuntimeException: CANCELLED
fromonNext()
for streaming responses. Previously the exception was also thrown fromonNext()
for unary responses and fromonComplete()
, which didn’t help the server avoid unnecessary processing - okhttp: OkHttpChannelBuilder made final and can no longer be anonymous
- api, core: delete io.grpc.LoadBalancer.loadBalancingConfig attribute (#7440). The attribute was deprecated in v1.27.0, now it is completely deleted.
New Features
- netty: Add support for IBMJSSE2 (#7422)
Documentation
- API documentation (Javadoc) for Server and Channel builders now correctly displays inherited methods and the class hierarchy
Bug Fixes
- core: Reverted "delay sending cancel request on client-side when deadline expires" which introduced a memory leak (#7105). It could also cause messages to arrive after the call was reported closed (e.g.,
onMessage()
afteronClose()
) - grpclb: Fixed a bug that RPC might be hanging when using grpclb balancer as a child balancer in a hierarchical load balancer tree (#7434)
- netty: TCP close during TLS handshake should be UNAVAILABLE, not UNKNOWN
- netty: BDP ping accounting should occur after flow control. This resolves an incompatibility issue introduced in v1.30.0 and could be worked around via
GRPC_EXPERIMENTAL_AUTOFLOWCONTROL=false
introduced later. The symptom was a GOAWAY with “too_many_pings” without an aggressive keepalive configured. The environment variable is still available, but will be removed in the future
Behavior Changes
- xds: Xds server channel credential option will be required in the xDS bootstrap file. Use
{"type":"insecure"}”
for plaintext (#7396)
Dependencies
- benchmarks: Removed -javaagent jvm option in CreateStartScripts, to allow running the benchmarks without building from source
- Upgrade Conscrypt to 2.5.1
- bazel: Remove Maven repositories from
repositories.bzl
, in favor ofmaven_install
. v1.27.0 introduced support formaven_install
and encouraged users to migrate. Seeexamples/WORKSPACE
for an example.maven_install
dramatically reduces the boilerplate for maven dependencies and properly handles transitive dependencies and version selection. gRPC is not yet using the@maven
workspace, so it is still possible to use other dependency tools. - Update protobuf gradle plugin version to 0.8.13 (#7355)
Acknowledgements
@codeblooded Benjamin Reed
@kiwi1969 Russell Shaw
@pkern Philipp Kern