The v1.78.0 release <https://github.com/grpc/grpc-java/releases/tag/v1.78.0> is 
now available.

Bug Fixes
   
   - core: Fix shutdown failing accepted RPCs during channel startup (
   02e98a8 
   
<https://github.com/grpc/grpc-java/commit/02e98a806d4738a113519115d55fc242243e98d6>).
 
   This fixes a race where RPCs could fail with "UNAVAILABLE: Channel shutdown 
   invoked" even though they were created before channel.shutdown()
   - okhttp: Fix race condition overwriting MAX_CONCURRENT_STREAMS (#12548 
   <https://github.com/grpc/grpc-java/pull/12548>) (8d49dc1 
   
<https://github.com/grpc/grpc-java/commit/8d49dc1c9129fc42c6b80584f5dbad1a543009b5>
   )
   - binder: Stop leaking this from BinderServerTransport's ctor (#12453 
   <https://github.com/grpc/grpc-java/pull/12453>) (89d77e0 
   
<https://github.com/grpc/grpc-java/commit/89d77e0620108588bbc76c8cfdc029073db82953>
   )
   - rls: Avoid missed config update from reentrancy (55ae1d0 
   
<https://github.com/grpc/grpc-java/commit/55ae1d0541c3482cf9fa2cadb156b1da6852deb4>).
 
   This fixes a regression since 1.75.0 triggered by CdsLb being converted to 
   XdsDepManager. Without this fix, a second channel to the same target may 
   hang when starting, causing DEADLINE_EXCEEDED, and unhang when the control 
   plane delivers an update (e.g., endpoint address update)

Improvements
   
   - xds: gRFC A88 - Changes to XdsClient Watcher APIs (#12446 
   <https://github.com/grpc/grpc-java/pull/12446>) (f385add 
   
<https://github.com/grpc/grpc-java/commit/f385add314a45794401d9edae18cef16b06b4655>).
 
   We now have improved xDS error handling and this provides a clearer 
   mechanism for the xDS server to report per-resource errors to the client, 
   resulting in better error messages for debugging and faster detection of 
   non-existent resources. This also improves the handling of all xDS-related 
   data errors and the behavior of the xDS resource timer.
   - rls: Control plane channel monitor state and back off handling (#12460 
   <https://github.com/grpc/grpc-java/pull/12460>) (26c1c13 
   
<https://github.com/grpc/grpc-java/commit/26c1c1341936640597f93a6a648e427a66d8dfe3>).
 
   Resets RLS request backoff timers when the Control plane channel state 
   transitions to READY. Also when the backoff timer expires, instead of 
   making a RLS request immediately, it just causes a picker update to allow 
   making rpc again to the RLS target.
   - core: simplify DnsNameResolver.resolveAddresses() (4843256 
   
<https://github.com/grpc/grpc-java/commit/4843256afde4fd7a0fda0791def5d7c834472cae>
   )
   - netty: Run handshakeCompleteRunnable in success cases (283f103 
   
<https://github.com/grpc/grpc-java/commit/283f1031f7b48ce32a2f91bb92bac93a0ca29bdd>
   )
   - api,netty: Add custom header support for HTTP CONNECT proxy (bbc0aa3 
   
<https://github.com/grpc/grpc-java/commit/bbc0aa369f4972f5aa639c6632c16a35a70cc576>
   )
   - binder: Pre-factor out the guts of the BinderClientTransport 
   handshake. (9313e87 
   
<https://github.com/grpc/grpc-java/commit/9313e87dfe55f00a5b73028b33e6d6866cbd6330>
   )
   - compiler: Add RISC-V 64-bit architecture support to compiler build 
   configuration (725ab22 
   
<https://github.com/grpc/grpc-java/commit/725ab22f33ec64108305159f8777389820f77c16>
   )
   - core: Release lock before closing shared resource (cb73f21 
   
<https://github.com/grpc/grpc-java/commit/cb73f217ee687106fb87cd2627bd5402e5acd5cc>).
 
   Shared resources are internal to gRPC for sharing expensive objects across 
   channels and servers, like threads. This reduces the chances of forming a 
   deadlock, like seen with s2a in d50098f 
   
<https://github.com/grpc/grpc-java/commit/d50098f80647f5737c53fd7110bf5f79b9d05255>
   - Upgrade gson to 2.12.1 (6dab2ce 
   
<https://github.com/grpc/grpc-java/commit/6dab2ceab57763265adacf8de9a5bc4bc8d1f1a5>
   )
   - Upgrade dependencies (f36defa 
   
<https://github.com/grpc/grpc-java/commit/f36defa2d3950de103d2a2dc73fc7f308d35f624>).
 
   proto-google-common-protos to 2.63.1, google-auth-library to 1.40.0, 
   error-prone annotations to 2.44.0, guava to 33.5.0-android, opentelemetry 
   to 1.56.0
   - compiler: Update maximum supported protobuf edition to EDITION_2024 (
   2f64092 
   
<https://github.com/grpc/grpc-java/commit/2f64092b8a5a07dad83ce710c12aede0fe84ccee>
   )
   - binder: Introduce server authorization strategy v2 (d971072 
   
<https://github.com/grpc/grpc-java/commit/d9710725d708e64b0455b8a184614b91c003d372>).
 
   Adds support for android:isolatedProcess Services and moves all security 
   checks to the handshake, making subsequent transactions more efficient.

New Features
   
   - compiler: Upgrade to C++ protobuf 33.1 (#12534 
   <https://github.com/grpc/grpc-java/pull/12534>) (58ae5f8 
   
<https://github.com/grpc/grpc-java/commit/58ae5f808cf8e20c5864033c9a8f485b237f9dfc>
   ).
   - util: Add gRFC A68 random subsetting LB (48a4288 
   
<https://github.com/grpc/grpc-java/commit/48a42889d5f8c9aca019d2cfe64400ff28a1a271>).
 
   The policy uses the name random_subsetting_experimental. If it is 
   working for you, tell us so we can gauge marking it stable. While the xDS 
   portions haven’t yet landed, it is possible to use with xDS with JSON-style 
   Structs as supported by gRFC A52
   - xds: Support for System Root Certs (#12499 
   <https://github.com/grpc/grpc-java/pull/12499>) (51611ba 
   
<https://github.com/grpc/grpc-java/commit/51611bad102657dddbc9d897a40a78af83871a99>).
 
   Most service mesh workloads use mTLS, as described in gRFC A29. However, 
   there are cases where it is useful for applications to use normal TLS 
   rather than using certificates for workload identity, such as when a mesh 
   wants to move some workloads behind a reverse proxy. The xDS 
   CertificateValidationContext message (see envoyproxy/envoy#34235 
   <https://github.com/envoyproxy/envoy/pull/34235>) has a system_root_certs 
field. 
   In the gRPC client, if this field is present and the 
   ca_certificate_provider_instance field is unset, system root 
   certificates will be used for validation. This implements gRFC A82 
   <https://github.com/grpc/proposal/blob/master/A82-xds-system-root-certs.md>
   .
   - xds: Support for GCP Authentication Filter (#12499 
   <https://github.com/grpc/grpc-java/pull/12499>) (51611ba 
   
<https://github.com/grpc/grpc-java/commit/51611bad102657dddbc9d897a40a78af83871a99>).
 
   In service mesh environments, there are cases where intermediate proxies 
   make it impossible to rely on mTLS for end-to-end authentication. These 
   cases can be addressed instead by the use of service account identity JWT 
   tokens. The xDS GCP Authentication filter 
   
<https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/gcp_authn_filter>
 provides 
   a mechanism for attaching such JWT tokens as gRPC call credentials on GCP. 
   gRPC already supports a framework for xDS HTTP filters, as described in gRFC 
   A39 
   <https://github.com/grpc/proposal/blob/master/A39-xds-http-filters.md>. 
   This release supports the GCP Authentication filter under this framework as 
   described in gRFC A83 
   <https://github.com/grpc/proposal/blob/master/A83-xds-gcp-authn-filter.md>
   .
   - xds: Support for xDS-based authority rewriting (#12499 
   <https://github.com/grpc/grpc-java/pull/12499>) (51611ba 
   
<https://github.com/grpc/grpc-java/commit/51611bad102657dddbc9d897a40a78af83871a99>).
 
   gRPC supports getting routing configuration from an xDS server, as 
   described in gRFCs A27 
   
<https://github.com/grpc/proposal/blob/master/A27-xds-global-load-balancing.md>
    and A28 
   
<https://github.com/grpc/proposal/blob/master/A28-xds-traffic-splitting-and-routing.md>.
 
   The xDS configuration can configure the client to rewrite the authority 
   header on requests. This functionality can be useful in cases where the 
   server is using the authority header to make decisions about how to process 
   the request, such as when multiple hosts are handled via a reverse proxy. 
   Note that this feature is solely about rewriting the authority header on 
   data plane RPCs; it does not affect the authority used in the TLS handshake.
   As mentioned in gRFC A29 
   <https://github.com/grpc/proposal/blob/master/A29-xds-tls-security.md>, 
   there are use-cases for gRPC that prohibit trusting the xDS server to 
   control security-centric configuration. The authority rewriting feature 
   falls under the same umbrella as mTLS configuration. As a result, the 
   authority rewriting feature will only be enabled when the bootstrap config 
   for the xDS server has trusted_xds_server in the server_features field.
   - xds: xDS based SNI setting and SAN validation (#12378 
   <https://github.com/grpc/grpc-java/pull/12378>) (0567531 
   
<https://github.com/grpc/grpc-java/commit/05675316cf960f5ec06d5611187a1c13341e43b9>).
 
   When using xDS credentials make SNI for the Tls handshake to be configured 
   via xDS, rather than use the channel authority as the SNI, and make SAN 
   validation to be able to use the SNI sent when so instructed via xDS. 
   Implements gRFC A101 
   
<https://github.com/grpc/proposal/blob/master/A101-SNI-setting-and-SNI-SAN-validation.md>
   .

Documentation
   
   - api: Document gRFC A18 TCP_USER_TIMEOUT handling for keepalive (da70387 
   
<https://github.com/grpc/grpc-java/commit/da70387824ec77727397029f2bb1683050cb3531>
   )
   - core: Fix AbstractClientStream Javadoc (28a6130 
   
<https://github.com/grpc/grpc-java/commit/28a6130e8026033a5906ff0d14f7eaedd3f066e9>
   )
   - examples: Document how to preserve META-INF/services in uber jars (
   97695d5 
   
<https://github.com/grpc/grpc-java/commit/97695d523eef447cf7a254781da6bc0cbf22ad21>
   )

Thanks to
   
   - @panchenko <https://github.com/panchenko>
   - @Dayuxiaoshui <https://github.com/Dayuxiaoshui>
   - @becomeStar <https://github.com/becomeStar>
   - @kssumin <https://github.com/kssumin>
   - @marcindabrowski <https://github.com/marcindabrowski>
   - @MariusVolkhart <https://github.com/MariusVolkhart>
   - @Zgoda91 <https://github.com/Zgoda91>
   - @devalkone <https://github.com/devalkone>

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/grpc-io/299c344a-d4e8-4da1-a9a3-05386c756464n%40googlegroups.com.

Reply via email to