Releases: grpc/grpc-java
v1.44.0
gRPC Java 1.44.0 Release Notes
Java 7 is no longer supported. This release uses Java 8 bytecode, except for grpc-context which remains on Java 7 bytecode. Users requiring Java 7 are encouraged to use the v1.41.x branch. See gRFC P5. Android support remains API level 19+. If this is expected to cause undue hardship or community issues, please contact us via a GitHub issue or [email protected].
Java 8 users pay note: per gRFC P5, gRPC may drop Java 8 support as soon as March this year. If this is expected to cause undue hardship or community issues, please contact us via a GitHub issue or [email protected].
API Changes
- Removed deprecated StreamInfo.transportAttrs (#8768)
Bug Fixes
- core: fix a race condition when calling ManagedChannel#enterIdle() (#8761)
- xds: rename
ring_hash
LB Policy toring_hash_experimental
to comply with gRPC A42: xDS Ring Hash LB Policy (#8776)
Behavior Changes
- Binder: Enclose all operations in BinderTransport even when an exception was thrown. (#8733)*
- Binder: Fix a bug that might cause memory leaks in binder. (#8728)
Dependencies
- Upgraded Protobuf to 3.19.2 to avoid CVE-2021-22569. See the protobuf advisory
- Bump GSON to 2.8.9 (#8759)
- Bump Netty to 4.1.72.Final and tcnative to 2.0.46.Final (#8780)
Acknowledgement
- groakley@
- apolcyn@
- beatrausch@
- danielnorberg@
- jdcormie@
v1.43.2
Dependencies
- Upgraded Protobuf to 3.19.2 to avoid CVE-2021-22569. See the protobuf advisory
v1.42.2
Bug Fixes
- census: fixed a bug which in rare cases, a NullPointerException may be thrown by
recordFinishedAttempt()
. Users not enabling grpc-census are not impacted by this bug (#8706) - core: fix a race condition when calling
ManagedChannel.enterIdle()
(#8746)
Dependencies
- Upgraded Protobuf to 3.18.2 to avoid CVE-2021-22569. See the protobuf advisory
- Upgraded Guava to 30.1.1-android
v1.41.2
Bug Fixes
- core: fix a race condition when calling
ManagedChannel.enterIdle()
(#8763) - xds: stop generating UUIDs for filter chains that lack them. The UUID was preventing the
XdsServer
from noticing when a control plane sent a needless duplicate update, causingXdsServer
to drain all its existing connections to use the “new” configuration #8736
Dependencies
- Upgraded Protobuf to 3.18.2 to avoid CVE-2021-22569. See the protobuf advisory
- Upgraded Guava to 30.1.1-android
v1.43.1
v1.43.0
API Changes
- alts: Make GoogleDefaultChannelCredentials take a CallCredentials (#8548)
- binder: Support BinderChannelBuilder.forTarget (#8633)
- inprocess: Add support for anonymous in-process servers (#8589)
Bug Fixes
- census: fixed a bug which in rare cases, a NullPointerException may be thrown by
recordFinishedAttempt()
. Users not enabling grpc-census are not impacted by this bug (#8706) - xds: stop generating UUIDs for filter chains that lack them. The UUID was preventing the XdsServer from noticing when a control plane sent a needless duplicate update, causing XdsServer to drain all its existing connections to use the “new” configuration #8663
- xds: fix a bug where XdsServer didn’t block start() when configuration is missing, and instead errored. #8660
New Features
- protoc-gen-grpc-java plugin support for Apple M1 architecture (#7690)
- okhttp: introduced new TLS1.2 cipher suites and internal okhttp implementation for TLS1.3 prepared (#8650)
- netty: Add ability to set system property
-Dio.grpc.netty.disableConnectionHeaderCheck=false
to disable HTTP Connection header check. This is a temporary workaround to allow fixing out-of-spec HTTP/2 clients (#8683)
Dependencies
Acknowledgement
@beatrausch
@benjaminp Benjamin Peterson
@cfredri4
@kdubb Kevin Wooten
v1.42.1
Bug fixes:
- xds: fix a bug that invalid resources from the control plane was internally classified as missing configuration, but instead it should be classified as a transient error. This will change load balancing states on failure handling behavior: for example, missing LDS at xDS server would make it enter “not serving” mode but a transient error does not affect serving status. #8690
- xds: fix a bug where XdsServer didn’t block start() when configuration is missing, and instead errored. #8690
- xds: stop generating UUIDs for filter chains that lack them. The UUID was preventing the
XdsServer
from noticing when a control plane sent a needless duplicate update, causingXdsServer
to drain all its existing connections to use the “new” configuration #8688
New feature:
- netty: Add ability to set system property
-Dio.grpc.netty.disableConnectionHeaderCheck=false
to disable HTTP Connection header check. This is a temporary workaround to allow fixing out-of-spec HTTP/2 clients #8683 - compiler: Protoc plugin for macOS x86 is duplicated to be used on the aarch architecture, to ease use on arm64 macs. The plugin is not actually ARM64, just named as such. Future work will need to compile it appropriately #8680
v1.40.2
v1.42.0
In this release we drop support for Android API level 18 or lower (Jelly Bean or earlier), following Google Play Service’s discontinued updates for Jelly Bean (API levels 16, 17 & 18).
API Changes
- xds: Added
XdsServerBuilder.overrideBootstrapForTest()
to provide bootstrap override for testing purposes. This way, the test does not need to use the shared environment variable for bootstrap injection. (#8575) - api: Stabilize the
Status.asException(Metadata)
method. (#8520) - core/auth: Remove
CallCredentials2
(#8572).CallCredentials2
was introduced in 1.16.0 to ease migration ofCallCredentials
to an abstract class.CallCredentials
has been preferred overCallCredentials2
since 1.19.0
Bug Fixes
- netty: Requests with Connection header are malformed. This is required per HTTP/2. The server now rejects such requests. To improve debuggability for clients, Metadata.Key will log if creating a key for “Connection”
- grpclb: Fix “IllegalStateException: already in fallback” channel panic, by not starting fallback timer if already in fallback (#8646). This builds on the fix in 1.38.1. The bug was introduced in 1.38.0.
- core, netty, okhttp: Fix AbstractManagedChannelImplBuilder#maxInboundMessageSize(int) ABI (#8607). Solves the issue with NettyChannelBuilder.maxInboundMessageSize(int) and OkHttpChannelBuilder.maxInboundMessageSize(int) not working in rare cases when pre-1.33 builds combined with post-1.33. See issue #8313 for the details.
New Features
- binder: A new transport with channel and server builders which support cross-process and cross-application communication on Android. BinderChannel is production ready and in use by several Google applications, though the APIs are still experimental and subject to change. It does not currently support rpc-level flow control for streaming RPCs. See gRFC L73 for background.
- xds: implemented rbac filter per A41 xDS RBAC. This is the first HTTP filter supported on server-side.
- stub: add
ServerCallStreamObserver.setOnCloseHandler(Runnable)
. Notified when gRPC has completed processing the RPC. (#8452)
Behavior Changes
- core: gRPC-Java library discards any Content-Length header set by the application because in most cases this header is blindly forwarded from some other source and is incorrect for gRPC payload.
- netty: Use Host header on server-side if :authority is not present
- rls: the cache_size in route lookup config is limited to 5M
- core: changed the level mapping ChannelLogger uses for java.util.logging.Level (#8531). It is now possible to enable Java logging for Channelz’s INFO without also enabling DEBUG (previously they were both FINEST).
Dependencies
- Compatibility with the upcoming Bazel 5 added. This required dropping support for Bazel 1-3. Bazel 4 or later is required (#7598)
- netty: bump netty to
4.1.63.Final
and tcnative to2.0.38.Final
. (#8167)
Improvements
- core:
io.grpc.util.AdvancedTlsX509KeyManager
andAdvancedTlsX509TrustManager
support loading configuration from static files. (#8525) - core:
io.grpc.util.CertificateUtils.getPrivateKey()
now supports RSA and EC key algorithms