Release notes <https://github.com/grpc/grpc-java/releases/tag/v1.81.0>

In this release we drop support for Android API level 22 or lower (Lollipop 
or earlier), following Google Play Service’s discontinued updates for 
Lollipop (API levels 21 & 22) 
<https://developers.google.com/android/guides/setup> and now requires a 
minimum of API level 23 (Android 6.0 Marshmallow).

*API Changes*

   - api: Deprecate LoadBalancer.handleResolvedAddresses(). Developers 
   maintaining custom LoadBalancer implementations should transition to using 
   LoadBalancer.acceptResolvedAddresses(). Unlike the deprecated method, 
   acceptResolvedAddresses() returns a Status object, allowing the load 
   balancer to explicitly report success or reject the update if the provided 
   addresses or configuration are invalid. (#11623 
   <https://github.com/grpc/grpc-java/pull/11623>) 

*Behavior Changes*

   - core: Enable dns "caching" on Android for 30 seconds to reduce CPU 
   impact of a refresh loop with an LB policy (0675f70 
   
<https://github.com/grpc/grpc-java/commit/0675f70af83679fe6978e3b4adbda999fe6d6ca5>).
 
   DnsNameResolver ignores re-resolution requests on OpenJDK-like platforms if 
   it has been too soon since the last DNS query because 
   InetAddress.getAllByName() has a cache with a fixed entry lifetime, but 
   this logic was disabled for Android which does not have that style of 
   cache. Android’s cache uses the result TTL, which will rarely be less than 
   30 seconds. This change would probably be most noticeable when 1) changing 
   to a different network (e.g., from wifi to mobile), 2) the server has 
   different addresses for different networks, and 3) the app is not using 
   AndroidChannelBuilder with an android.context.Context. For reference, it 
   seems Chrome caches for 1 minute 

*Bug Fixes*

   - opentelemetry: Fix baggage propagation, the baggage propagation for 
   opentelemetry introduced in #12389 
   <https://github.com/grpc/grpc-java/pull/12389> was broken. The context 
   is decided once and used for all recording for the call, thus guaranteeing 
   all record()s have consistent information. 
   - core: Address a race condition where ManagedChannelOrphanWrapper could 
   incorrectly log a "not shutdown properly" warning during garbage collection 
   when using directExecutor(). (#12705 
   <https://github.com/grpc/grpc-java/pull/12705>) (d459338 
   
<https://github.com/grpc/grpc-java/commit/d459338d9c9e2870ebf03a551d96cbff4c60747f>
   ) 
   - xds: Fix xDS HTTP CONNECT's transport socket name bug which is now 
   corrected to use typeUrl. (#12740 
   <https://github.com/grpc/grpc-java/pull/12740>) (eac9fe9 
   
<https://github.com/grpc/grpc-java/commit/eac9fe9612881d54d51ddc5496599ba9a8201021>
   ) 
   - xds: Fix an issue where subchannel metrics were dropping their 
   association with the backend_service. This ensures xDS load balancing 
   metrics are reported accurately. (#12735 
   <https://github.com/grpc/grpc-java/pull/12735>) 

*New Features*

   - netty: Add tcp metrics, by implementing a few of the metrics defined 
   in A80 <https://github.com/grpc/proposal/pull/519>. 
   - api: Add a CallOption for a custom label on per-RPC metrics (0e39b29 
   
<https://github.com/grpc/grpc-java/commit/0e39b2967f0ba0a7a7f08bb9cbc9d16391c91dcd>).
 
   This CallOption is copied by grpc-opentelemetry to 
   the grpc.client.call.custom label as defined by gRFC A108 
   
<https://github.com/grpc/proposal/blob/master/A108-otel-custom-per-call-label.md>.
 
   See also the gRPC OpenTelemetry Metrics guide 
   <https://grpc.io/docs/guides/opentelemetry-metrics/> (update in-progress 
   <https://github.com/grpc/grpc.io/pull/1505>) 
   - xds: Add support for Weighted Round Robin (WRR) load balancing driven 
   by custom backend metrics, implementing the behavior defined in gRFC A114. (
   #12645 <https://github.com/grpc/grpc-java/pull/12645>) 
   - utils: Update AdvancedTlsX509KeyManager so that developers can now 
   preserve and use key aliases when dynamically reloading TLS certificates. (
   #12686 <https://github.com/grpc/grpc-java/pull/12686>) 

*Documentation*

   - Update the "Outgoing Flow Control" section in the Manual Flow Control 
   example to say onNext() does not block, but rather queues the messages in 
   memory and advises developers to use CallStreamObserver.isReady() to 
   prevent this memory exhaustion (#12700 
   <https://github.com/grpc/grpc-java/pull/12700>) (a3a9ffc 
   
<https://github.com/grpc/grpc-java/commit/a3a9ffcbe498dcd4a6367da1cde2f859246ec4b2>)
 
   (#12726 <https://github.com/grpc/grpc-java/pull/12726>) (65ae2ef 
   
<https://github.com/grpc/grpc-java/commit/65ae2efda3cdd8d8dcc1f1daac0880ec1efa5185>
   ) 
   - examples: Clean up Health example, and document need for grpc-services 
   (3ed732f 
   
<https://github.com/grpc/grpc-java/commit/3ed732fc09c41b185cd03fdd6864c4ebb82f3a80>
   ) 

*Dependencies*

   - Upgrade Dependencies (#12719 
   <https://github.com/grpc/grpc-java/pull/12719>) (16e17ab 
   
<https://github.com/grpc/grpc-java/commit/16e17abbad068d5f87612fb8748f687ef4753f4b>).
 
   Google-auth-library: 1.42.1, animal-sniffer: 1.27, assertj-core:3.27.7, 
   error_prone_annotations:2.48.0, proto-google-common-protos:2.64.1, 
   google-cloud-logging:3.23.10, jetty-http2-server:12.1.7, 
   jetty-ee10-servlet:12.1.7, lincheck:3.4, opentelemetry-api:1.60.1, 
   opentelemetry-exporter-prometheus:1.60.1-alpha, 
   opentelemetry-gcp-resources:1.54.0-alpha, 
   opentelemetry-sdk-extension-autoconfigure:1.60.1, 
   opentelemetry-sdk-testing:1.60.1, robolectric:4.16.1, 
   tomcat-embed-core:10.1.52, tomcat-embed-core9: 9.0.115, 
   - Upgrade Netty to 4.1.132 and netty-tcnative to 2.0.75 (1528f80 
   
<https://github.com/grpc/grpc-java/commit/1528f809c9e506cf2e7052e3f41fd8b75636d3d3>
   ) 

*Thanks to*

   - *@becomeStar* <https://github.com/becomeStar> 
   - *@benjaminp* <https://github.com/benjaminp> 
   - *@JoeCqupt* <https://github.com/JoeCqupt> 
   - *@Kainsin* <https://github.com/Kainsin> 
   - *@merlimat* <https://github.com/merlimat> 
   - *@SreeramdasLavanya* <https://github.com/SreeramdasLavanya> 
   - *@themechbro* <https://github.com/themechbro>
   - *@zhangweikop* <https://github.com/zhangweikop>


   

-- 
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/600cad25-dc69-444c-881d-e5ae87ae415cn%40googlegroups.com.

Reply via email to