API Changes
- api: Removed deprecated method
ClientStreamTracer.Factory.newClientStreamTracer(CallOptions callOptions, Metadata headers)
. - api: Deprecated
ClientStreamTracer.StreamInfo.getTransportAttrs()
andClientStreamTracer.StreamInfo.Builder.setTransportAttrs()
. - api: Added new method
ClientStreamTracer.streamCreated(Attributes transportAttrs, Metadata headers)
. - core: Stabilized
ManagedChannelBuilder.enableRetry()
andManagedChannelBuilder.disableRetry()
.
Bug Fixes
- core: Fix a flow control issue if retry is enabled (#8401).
- core: Fix a race between client call cancel() and start() if retry is enabled (#8386).
- xds: Fix the race condition in SslContextProviderSupplier's updateSslContext and close (#8294).
- xds: If “server_listener_resource_name_template” is not set or xds_v3 is not in use, log an error and fail XdsServer
start()
instead of NPE. - netty: The Netty server produces plain-text error messages for non-gRPC clients. The error pages’ Content-Type incorrectly had
encoding=utf-8
. It now hascharset=utf-8
.
New Features
- compiler: Added GrpcGenerated annotation with CLASS retention to the top-level generated class. This can be used by annotation processors to detect or ignore the generated code.
- api: Added ServerCallExecutorSupplier experimental API. This allows for a per-service/method executor to handle the server call based on each RPC call information at runtime. (#8266).
- xds: Added xDS retry support (gRFC-A44).
Behavior Changes
- core: The gRPC built-in retry feature is enabled by default. (Users can call
ManagedChannelBuilder.disableRetry()
to turn off retry if they do not want this feature, for example if they have already implemented an application level retry.)ManagedChannelBuilder.enableRetry()
will no longer have the side that disables Census stats and tracing as in previous versions.
Dependencies
Improvements
- api: Clarify the ServerCallHandler API contract in Javadoc (#8339).
- netty: Allow transparent retries for servers that lack graceful two-stage GOAWAY connection shutdown, such as nginx and gRPC C core. This refined a workaround introduced in 1.34.0 for a Netty header processing GOAWAY bug fixed in 4.1.54.Final, but that we are giving time for the fix to work its way through the ecosystem (#8359).
- testing: Make more obvious in Javadoc that GrpcServerRule has been replaced.
- api: Use <scheme,provider> map in nameResoverRegistry. This makes scheme matching more clear and explicit in name resolver API.(#8323).