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

Behavior Changes
   
   - binder: Introduce server pre-authorization (#12127 
   <https://github.com/grpc/grpc-java/pull/12127>). grpc-binder clients 
   authorize servers by checking the UID of the sender of the SETUP_TRANSPORT 
   Binder transaction against some SecurityPolicy. But merely binding to an 
   unauthorized server to learn its UID can enable "keep-alive" and 
   "background activity launch" abuse, even if security policy ultimately 
   causes the grpc connection to fail. Pre-authorization mitigates this kind 
   of abuse by resolving addresses and authorizing a candidate server 
   Application's UID before binding to it. Pre-auth is especially important 
   when the server's address is not fixed in advance but discovered by 
   PackageManager lookup.

Bug Fixes
   
   - 
   
   core: grpc-timeout should always be positive (#12201 
   <https://github.com/grpc/grpc-java/pull/12201>) (6dfa03c 
   
<https://github.com/grpc/grpc-java/commit/6dfa03c51c0f67bde1db56a7c71cbd538aef6e82>).
 
   There is a local race between when the deadline is checked before sending 
   the RPC and when the timeout is calculated to put on-the-wire. The code 
   replaced negative timeouts with 0 nanoseconds. gRPC’s PROTOCOL-HTTP2 spec 
   states that timeouts should be positive, so now non-positive values are 
   replaced with 1 nanosecond
   - 
   
   core: Improved DEADLINE_EXCEEDED message for delayed calls (6ff8eca 
   
<https://github.com/grpc/grpc-java/commit/6ff8ecac09aa2a9e84b342d0326eb424a286fb32>).
 
   Delayed calls are the first calls on a Channel before name resolution has 
   resolved addresses. Previously you could see confusing errors saying the 
   deadline “will be exceeded in” X time. The message tense was simply wrong, 
   and now will be correct: deadline “was exceeded after” X time.
   - 
   
   xds: PriorityLB now only uses the failOverTimer to start additional 
   priorities, not fail RPCs (c4256ad 
   
<https://github.com/grpc/grpc-java/commit/c4256add4d58b1ac0e0bbc340874483d408f9a9c>).
 
   You should no longer see “Connection timeout for priority” errors.
   
Improvements
   
   - 
   
   netty: Count sent RST_STREAMs against 
   NettyServerBuilder.maxRstFramesPerWindow() limit (#12288 
   <https://github.com/grpc/grpc-java/pull/12288>). This extends the Rapid 
   Reset tool to also cover MadeYouReset. the reset stream count will cause a 
   420 "Enhance your calm response" to be sent. This depends on Netty 4.1.124 
   for a bug fix to actually call the encoder by the frame writer.
   - 
   
   xds: Convert CdsLb to XdsDepManager (297ab05 
   
<https://github.com/grpc/grpc-java/commit/297ab05efeb0565c195518a819dfa851d1c0d62b>).
 
   This is part of gRFC A74 to have atomic xDS config updates. This is an 
   internal change, but does change the error description seen in certain 
   cases, especially DEADLINE_EXCEEDED on a brand-new channel.
   - 
   
   census: APIs for stats and tracing (#12050 
   <https://github.com/grpc/grpc-java/pull/12050>) (9193701 
   
<https://github.com/grpc/grpc-java/commit/919370172d65a819bb1e7ccb47f2285b0ccfd17e>).
 
   Client channel and server builders with interceptors and factories 
   respectively for stats and tracing.
   - 
   
   stub: simplify BlockingClientCall infinite blocking (#12217 
   <https://github.com/grpc/grpc-java/pull/12217>) (ba0a732 
   
<https://github.com/grpc/grpc-java/commit/ba0a7329da9f52cb4520d7f8d5676edf197e8cff>).
 
   Move deadline computation into overloads with finite timeouts. Blocking 
   calls without timeouts now do not have to read the clock.
   - 
   
   xds: Do RLS fallback policy eagar start (#12211 
   <https://github.com/grpc/grpc-java/pull/12211>) (42e1829 
   
<https://github.com/grpc/grpc-java/commit/42e1829b3724c0fb20910c0abe70099994856307>).
 
   In gRPC-Java, the xDS clusters were lazily subscribed, which meant the 
   fallback target which is returned in the RLS config wasn’t subscribed until 
   a RPC actually falls back to it. The delayed resource subscription process 
   in gRPC Java made it more susceptible to the effects of the 
   INITIAL_RESOURCE_FETCH_TIMEOUT compared to other programming languages. It 
   also had impact beyond the RLS cache expiration case, for example, when the 
   first time the client initialized the channel, we couldn't fallback when 
   the intended target times out, because of the lazy subscription. This 
   change starts the fallback LB policy for the default target at the start of 
   RLS policy instead of only when falling back to the default target, which 
   fixes the above mentioned problems.
   - 
   
   xds: Aggregate cluster fixes (A75) (#12186 
   <https://github.com/grpc/grpc-java/pull/12186>) (7e982e4 
   
<https://github.com/grpc/grpc-java/commit/7e982e48a1ee03b509124ea7ad3c4a4464f8a189>).
 
   The earlier implementation of aggregate clusters concatenated the 
   priorities from the underlying clusters into a single list, so that it 
   could use a single LB policy defined at the aggregate cluster layer to 
   choose a priority from that combined list. However, it turns out that 
   aggregate clusters don't actually define the LB policy in the aggregate 
   cluster; instead, the aggregate cluster uses a special cluster-provided LB 
   policy that first chooses the underlying cluster and then delegates to the 
   LB policy of the underlying cluster. This change implements that.
   - 
   
   api: set size correctly for sets and maps in handling Metadata values to 
   be exchanged during a call (#12229 
   <https://github.com/grpc/grpc-java/pull/12229>) (8021727 
   
<https://github.com/grpc/grpc-java/commit/80217275db3bd3d565a0167812560119d15d0a83>
   )
   - 
   
   xds: xdsClient cache transient error for new watchers (#12291 
   <https://github.com/grpc/grpc-java/pull/12291>). When a resource update 
   is NACKed, cache the error and update new watchers that get added with that 
   error instead of making them hang.
   - 
   
   xds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (#12289 
   <https://github.com/grpc/grpc-java/pull/12289>). If a LB policy gives 
   extraneous updates with state CONNECTING, then it was possible to re-create 
   failOverTimer which would then wait the 10 seconds for the child to 
   finish CONNECTING. We only want to give the child one opportunity after 
   transitioning out of READY/IDLE.
   - 
   
   xds: Use a different log name for XdsClientImpl and ControlPlaneClient (
   #12287 <https://github.com/grpc/grpc-java/pull/12287>). 
   ControlPlaneClient uses "xds-cp-client" now instead of "xds-client" 
   while logging.
   
Dependencies Changes
   
   - 
   
   Upgrade to Netty 4.1.124.Final (#12286 
   <https://github.com/grpc/grpc-java/pull/12286>). This implicitly 
   disables NettyAdaptiveCumulator (#11284 
   <https://github.com/grpc/grpc-java/issues/11284>), which can have a 
   performance impact. We delayed upgrading Netty to give time to rework the 
   optimization, but we've gone too long already without upgrading which 
   causes problems for vulnerability tracking.
   - 
   
   bazel: Use jar_jar to avoid xds deps (#12243 
   <https://github.com/grpc/grpc-java/pull/12243>) (8f09b96 
   
<https://github.com/grpc/grpc-java/commit/8f09b968991ab78d565dc1af7b6d1d07c9386795>).
 
   The //xds and //xds:orca targets now use jar_jar to shade the protobuf 
   generated code. This allows them to use their own private copy of the 
   protos and drop direct Bazel dependencies on cel-spec, grpc, rules_go, 
   com_github_cncf_xds, envoy_api, com_envoyproxy_protoc_gen_validate, and 
   opencensus_proto. This mirrors the shading of protobuf messages done for 
   grpc-xds provided on Maven Central and should simplify dependency management
   
Documentation
   
   - 
   
   Clarify requirements for creating a cross-user Channel. (#12181 
   <https://github.com/grpc/grpc-java/pull/12181>). The @SystemApi runtime 
   visibility requirement isn't really new. It has always been implicit in the 
   required INTERACT_ACROSS_USERS permission, which can only be held by system 
   apps in production. Now deprecated BinderChannelBuilder#bindAsUser has 
   always required SDK_INT >= 30. This change just copies that requirement 
   forward to its replacement APIs in AndroidComponentAddress and the 
   TARGET_ANDROID_USER NameResolver.Args.
   - 
   
   api: Add more Javadoc for NameResolver.Listener2 interface (#12220 
   <https://github.com/grpc/grpc-java/pull/12220>) (d352540 
   
<https://github.com/grpc/grpc-java/commit/d352540a02cc3f438caf7527acfa7bec8c03ecf8>
   )
   
Thanks to

@benjaminp <https://github.com/benjaminp>
@werkt <https://github.com/werkt>
@kilink <https://github.com/kilink>
@vimanikag <https://github.com/vimanikag>

-- 
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 grpc-io+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/grpc-io/ac1acc0c-cb84-4c06-8c97-808f9f75d8c8n%40googlegroups.com.

Reply via email to