{"id":36418,"name":"io.grpc.version","ecosystem":"maven","repository_url":null,"issues_count":4,"created_at":"2025-06-08T02:08:17.512Z","updated_at":"2025-06-08T02:08:17.512Z","purl":"pkg:maven/io.grpc.version","unique_repositories_count":2,"unique_repositories_count_past_30_days":1,"recent_issues":[{"uuid":"2772965923","node_id":"PR_kwDOK4L0VM6lSBoj","number":61,"state":"closed","title":"chore(deps): bump io.grpc.version from 1.70.0 to 1.75.0","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":"2025-09-14T17:15:35.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-08-25T20:38:07.000Z","updated_at":"2025-09-14T17:15:35.000Z","time_to_close":1715848,"merged_at":"2025-09-14T17:15:35.000Z","merged_by":"hemicharly","closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"io.grpc.version","old_version":"1.70.0","new_version":"1.75.0","repository_url":null}],"path":null,"ecosystem":"maven"},"body":"Bumps `io.grpc.version` from 1.70.0 to 1.75.0.\nUpdates `io.grpc:grpc-netty-shaded` from 1.70.0 to 1.75.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-netty-shaded's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.75.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ebinder: Introduce server pre-authorization (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12127\"\u003e#12127\u003c/a\u003e). 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 \u0026quot;keep-alive\u0026quot; and \u0026quot;background activity launch\u0026quot; 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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ecore: \u003ccode\u003egrpc-timeout\u003c/code\u003e should always be positive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12201\"\u003e#12201\u003c/a\u003e) (6dfa03c51). 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\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecore: Improved DEADLINE_EXCEEDED message for delayed calls (6ff8ecac0). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: PriorityLB now only uses the failOverTimer to start additional priorities, not fail RPCs (c4256add4). You should no longer see “Connection timeout for priority” errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003enetty: Count sent RST_STREAMs against \u003ccode\u003eNettyServerBuilder.maxRstFramesPerWindow()\u003c/code\u003e limit (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e). This extends the Rapid Reset tool to also cover MadeYouReset. the reset stream count will cause a 420 \u0026quot;Enhance your calm response\u0026quot; to be sent. This depends on Netty 4.1.124 for a bug fix to actually call the encoder by the frame writer.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Convert CdsLb to \u003ccode\u003eXdsDepManager\u003c/code\u003e (297ab05ef). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecensus: APIs for stats and tracing (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12050\"\u003e#12050\u003c/a\u003e) (919370172). Client channel and server builders with interceptors and factories respectively for stats and tracing.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003estub: simplify \u003ccode\u003eBlockingClientCall\u003c/code\u003e infinite blocking (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12217\"\u003e#12217\u003c/a\u003e) (ba0a7329d). Move deadline computation into overloads with finite timeouts. Blocking calls without timeouts now do not have to read the clock.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Do RLS fallback policy eagar start (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12211\"\u003e#12211\u003c/a\u003e) (42e1829b3). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Aggregate cluster fixes (A75) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12186\"\u003e#12186\u003c/a\u003e) (7e982e48a). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: set size correctly for sets and maps in handling \u003ccode\u003eMetadata\u003c/code\u003e values to be exchanged during a call (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12229\"\u003e#12229\u003c/a\u003e) (80217275d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: xdsClient cache transient error for new watchers (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12291\"\u003e#12291\u003c/a\u003e). When a resource update is NACKed, cache the error and update new watchers that get added with that error instead of making them hang.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e). If a LB policy gives extraneous updates with state CONNECTING, then it was possible to re-create \u003ccode\u003efailOverTimer\u003c/code\u003e 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Use a different log name for \u003ccode\u003eXdsClientImpl\u003c/code\u003e and \u003ccode\u003eControlPlaneClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12287\"\u003e#12287\u003c/a\u003e). \u003ccode\u003eControlPlaneClient\u003c/code\u003e uses \u0026quot;xds-cp-client\u0026quot; now instead of \u0026quot;xds-client\u0026quot; while logging.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to Netty 4.1.124.Final (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e). This implicitly disables \u003ccode\u003eNettyAdaptiveCumulator\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11284\"\u003e#11284\u003c/a\u003e), 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebazel: Use \u003ccode\u003ejar_jar\u003c/code\u003e to avoid xds deps (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12243\"\u003e#12243\u003c/a\u003e) (8f09b9689). The //xds and //xds:orca targets now use \u003ccode\u003ejar_jar\u003c/code\u003e 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\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClarify requirements for creating a cross-user Channel. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12181\"\u003e#12181\u003c/a\u003e). The \u003ccode\u003e@SystemApi\u003c/code\u003e 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 \u003ccode\u003eBinderChannelBuilder#bindAsUser\u003c/code\u003e has always required SDK_INT \u0026gt;= 30. This change just copies that requirement forward to its replacement APIs in \u003ccode\u003eAndroidComponentAddress\u003c/code\u003e and the TARGET_ANDROID_USER \u003ccode\u003eNameResolver.Args\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: Add more Javadoc for \u003ccode\u003eNameResolver.Listener2\u003c/code\u003e interface (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12220\"\u003e#12220\u003c/a\u003e) (d352540a0)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/benjaminp\"\u003e\u003ccode\u003e@​benjaminp\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/werkt\"\u003e\u003ccode\u003e@​werkt\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/kilink\"\u003e\u003ccode\u003e@​kilink\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/vimanikag\"\u003e\u003ccode\u003e@​vimanikag\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3abc0e6e1f4981017b7117e47e1844a318a51f24\"\u003e\u003ccode\u003e3abc0e6\u003c/code\u003e\u003c/a\u003e Bump version to 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/cbfe6c1ccaf0d9480daa8faa3e37a117adb798ba\"\u003e\u003ccode\u003ecbfe6c1\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a0f3520ad0bf5186f84d48b7df6e2555e8b16da8\"\u003e\u003ccode\u003ea0f3520\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12295\"\u003e#12295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7ef13f40a6d9cdaccd0c064b5bd3745f9518781e\"\u003e\u003ccode\u003e7ef13f4\u003c/code\u003e\u003c/a\u003e Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/14fd8eff28d55fae4a791b256602d83a5fb9d848\"\u003e\u003ccode\u003e14fd8ef\u003c/code\u003e\u003c/a\u003e xds: xdsClient caches transient error for new watchers (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/653d076c605a9066cf6ae484921058580df2437d\"\u003e\u003ccode\u003e653d076\u003c/code\u003e\u003c/a\u003e xds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5c2b1aa51608b1fff016a313d8ee65f92e8d23d\"\u003e\u003ccode\u003ea5c2b1a\u003c/code\u003e\u003c/a\u003e netty: Count sent RST_STREAMs against limit (1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/0d3e8283a8105a7bbf1bf746d96cac1e363de2e3\"\u003e\u003ccode\u003e0d3e828\u003c/code\u003e\u003c/a\u003e xds: Use a different log name for XdsClientImpl and ControlPlaneClient (1.75....\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/d750e9df576a63f8b0d55eefc730282dc60f99d1\"\u003e\u003ccode\u003ed750e9d\u003c/code\u003e\u003c/a\u003e Upgrade to Netty 4.1.124.Final (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/19c579e8a93cc0660df1523b5740eae9aa888a09\"\u003e\u003ccode\u003e19c579e\u003c/code\u003e\u003c/a\u003e Bump versions of dependencies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12252\"\u003e#12252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.75.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-protobuf` from 1.70.0 to 1.75.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-protobuf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.75.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ebinder: Introduce server pre-authorization (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12127\"\u003e#12127\u003c/a\u003e). 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 \u0026quot;keep-alive\u0026quot; and \u0026quot;background activity launch\u0026quot; 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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ecore: \u003ccode\u003egrpc-timeout\u003c/code\u003e should always be positive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12201\"\u003e#12201\u003c/a\u003e) (6dfa03c51). 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\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecore: Improved DEADLINE_EXCEEDED message for delayed calls (6ff8ecac0). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: PriorityLB now only uses the failOverTimer to start additional priorities, not fail RPCs (c4256add4). You should no longer see “Connection timeout for priority” errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003enetty: Count sent RST_STREAMs against \u003ccode\u003eNettyServerBuilder.maxRstFramesPerWindow()\u003c/code\u003e limit (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e). This extends the Rapid Reset tool to also cover MadeYouReset. the reset stream count will cause a 420 \u0026quot;Enhance your calm response\u0026quot; to be sent. This depends on Netty 4.1.124 for a bug fix to actually call the encoder by the frame writer.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Convert CdsLb to \u003ccode\u003eXdsDepManager\u003c/code\u003e (297ab05ef). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecensus: APIs for stats and tracing (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12050\"\u003e#12050\u003c/a\u003e) (919370172). Client channel and server builders with interceptors and factories respectively for stats and tracing.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003estub: simplify \u003ccode\u003eBlockingClientCall\u003c/code\u003e infinite blocking (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12217\"\u003e#12217\u003c/a\u003e) (ba0a7329d). Move deadline computation into overloads with finite timeouts. Blocking calls without timeouts now do not have to read the clock.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Do RLS fallback policy eagar start (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12211\"\u003e#12211\u003c/a\u003e) (42e1829b3). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Aggregate cluster fixes (A75) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12186\"\u003e#12186\u003c/a\u003e) (7e982e48a). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: set size correctly for sets and maps in handling \u003ccode\u003eMetadata\u003c/code\u003e values to be exchanged during a call (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12229\"\u003e#12229\u003c/a\u003e) (80217275d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: xdsClient cache transient error for new watchers (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12291\"\u003e#12291\u003c/a\u003e). When a resource update is NACKed, cache the error and update new watchers that get added with that error instead of making them hang.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e). If a LB policy gives extraneous updates with state CONNECTING, then it was possible to re-create \u003ccode\u003efailOverTimer\u003c/code\u003e 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Use a different log name for \u003ccode\u003eXdsClientImpl\u003c/code\u003e and \u003ccode\u003eControlPlaneClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12287\"\u003e#12287\u003c/a\u003e). \u003ccode\u003eControlPlaneClient\u003c/code\u003e uses \u0026quot;xds-cp-client\u0026quot; now instead of \u0026quot;xds-client\u0026quot; while logging.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to Netty 4.1.124.Final (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e). This implicitly disables \u003ccode\u003eNettyAdaptiveCumulator\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11284\"\u003e#11284\u003c/a\u003e), 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebazel: Use \u003ccode\u003ejar_jar\u003c/code\u003e to avoid xds deps (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12243\"\u003e#12243\u003c/a\u003e) (8f09b9689). The //xds and //xds:orca targets now use \u003ccode\u003ejar_jar\u003c/code\u003e 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\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClarify requirements for creating a cross-user Channel. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12181\"\u003e#12181\u003c/a\u003e). The \u003ccode\u003e@SystemApi\u003c/code\u003e 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 \u003ccode\u003eBinderChannelBuilder#bindAsUser\u003c/code\u003e has always required SDK_INT \u0026gt;= 30. This change just copies that requirement forward to its replacement APIs in \u003ccode\u003eAndroidComponentAddress\u003c/code\u003e and the TARGET_ANDROID_USER \u003ccode\u003eNameResolver.Args\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: Add more Javadoc for \u003ccode\u003eNameResolver.Listener2\u003c/code\u003e interface (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12220\"\u003e#12220\u003c/a\u003e) (d352540a0)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/benjaminp\"\u003e\u003ccode\u003e@​benjaminp\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/werkt\"\u003e\u003ccode\u003e@​werkt\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/kilink\"\u003e\u003ccode\u003e@​kilink\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/vimanikag\"\u003e\u003ccode\u003e@​vimanikag\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3abc0e6e1f4981017b7117e47e1844a318a51f24\"\u003e\u003ccode\u003e3abc0e6\u003c/code\u003e\u003c/a\u003e Bump version to 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/cbfe6c1ccaf0d9480daa8faa3e37a117adb798ba\"\u003e\u003ccode\u003ecbfe6c1\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a0f3520ad0bf5186f84d48b7df6e2555e8b16da8\"\u003e\u003ccode\u003ea0f3520\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12295\"\u003e#12295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7ef13f40a6d9cdaccd0c064b5bd3745f9518781e\"\u003e\u003ccode\u003e7ef13f4\u003c/code\u003e\u003c/a\u003e Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/14fd8eff28d55fae4a791b256602d83a5fb9d848\"\u003e\u003ccode\u003e14fd8ef\u003c/code\u003e\u003c/a\u003e xds: xdsClient caches transient error for new watchers (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/653d076c605a9066cf6ae484921058580df2437d\"\u003e\u003ccode\u003e653d076\u003c/code\u003e\u003c/a\u003e xds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5c2b1aa51608b1fff016a313d8ee65f92e8d23d\"\u003e\u003ccode\u003ea5c2b1a\u003c/code\u003e\u003c/a\u003e netty: Count sent RST_STREAMs against limit (1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/0d3e8283a8105a7bbf1bf746d96cac1e363de2e3\"\u003e\u003ccode\u003e0d3e828\u003c/code\u003e\u003c/a\u003e xds: Use a different log name for XdsClientImpl and ControlPlaneClient (1.75....\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/d750e9df576a63f8b0d55eefc730282dc60f99d1\"\u003e\u003ccode\u003ed750e9d\u003c/code\u003e\u003c/a\u003e Upgrade to Netty 4.1.124.Final (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/19c579e8a93cc0660df1523b5740eae9aa888a09\"\u003e\u003ccode\u003e19c579e\u003c/code\u003e\u003c/a\u003e Bump versions of dependencies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12252\"\u003e#12252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.75.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-stub` from 1.70.0 to 1.75.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-stub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.75.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ebinder: Introduce server pre-authorization (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12127\"\u003e#12127\u003c/a\u003e). 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 \u0026quot;keep-alive\u0026quot; and \u0026quot;background activity launch\u0026quot; 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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ecore: \u003ccode\u003egrpc-timeout\u003c/code\u003e should always be positive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12201\"\u003e#12201\u003c/a\u003e) (6dfa03c51). 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\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecore: Improved DEADLINE_EXCEEDED message for delayed calls (6ff8ecac0). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: PriorityLB now only uses the failOverTimer to start additional priorities, not fail RPCs (c4256add4). You should no longer see “Connection timeout for priority” errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003enetty: Count sent RST_STREAMs against \u003ccode\u003eNettyServerBuilder.maxRstFramesPerWindow()\u003c/code\u003e limit (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e). This extends the Rapid Reset tool to also cover MadeYouReset. the reset stream count will cause a 420 \u0026quot;Enhance your calm response\u0026quot; to be sent. This depends on Netty 4.1.124 for a bug fix to actually call the encoder by the frame writer.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Convert CdsLb to \u003ccode\u003eXdsDepManager\u003c/code\u003e (297ab05ef). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecensus: APIs for stats and tracing (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12050\"\u003e#12050\u003c/a\u003e) (919370172). Client channel and server builders with interceptors and factories respectively for stats and tracing.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003estub: simplify \u003ccode\u003eBlockingClientCall\u003c/code\u003e infinite blocking (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12217\"\u003e#12217\u003c/a\u003e) (ba0a7329d). Move deadline computation into overloads with finite timeouts. Blocking calls without timeouts now do not have to read the clock.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Do RLS fallback policy eagar start (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12211\"\u003e#12211\u003c/a\u003e) (42e1829b3). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Aggregate cluster fixes (A75) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12186\"\u003e#12186\u003c/a\u003e) (7e982e48a). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: set size correctly for sets and maps in handling \u003ccode\u003eMetadata\u003c/code\u003e values to be exchanged during a call (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12229\"\u003e#12229\u003c/a\u003e) (80217275d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: xdsClient cache transient error for new watchers (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12291\"\u003e#12291\u003c/a\u003e). When a resource update is NACKed, cache the error and update new watchers that get added with that error instead of making them hang.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e). If a LB policy gives extraneous updates with state CONNECTING, then it was possible to re-create \u003ccode\u003efailOverTimer\u003c/code\u003e 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Use a different log name for \u003ccode\u003eXdsClientImpl\u003c/code\u003e and \u003ccode\u003eControlPlaneClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12287\"\u003e#12287\u003c/a\u003e). \u003ccode\u003eControlPlaneClient\u003c/code\u003e uses \u0026quot;xds-cp-client\u0026quot; now instead of \u0026quot;xds-client\u0026quot; while logging.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to Netty 4.1.124.Final (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e). This implicitly disables \u003ccode\u003eNettyAdaptiveCumulator\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11284\"\u003e#11284\u003c/a\u003e), 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebazel: Use \u003ccode\u003ejar_jar\u003c/code\u003e to avoid xds deps (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12243\"\u003e#12243\u003c/a\u003e) (8f09b9689). The //xds and //xds:orca targets now use \u003ccode\u003ejar_jar\u003c/code\u003e 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\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClarify requirements for creating a cross-user Channel. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12181\"\u003e#12181\u003c/a\u003e). The \u003ccode\u003e@SystemApi\u003c/code\u003e 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 \u003ccode\u003eBinderChannelBuilder#bindAsUser\u003c/code\u003e has always required SDK_INT \u0026gt;= 30. This change just copies that requirement forward to its replacement APIs in \u003ccode\u003eAndroidComponentAddress\u003c/code\u003e and the TARGET_ANDROID_USER \u003ccode\u003eNameResolver.Args\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: Add more Javadoc for \u003ccode\u003eNameResolver.Listener2\u003c/code\u003e interface (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12220\"\u003e#12220\u003c/a\u003e) (d352540a0)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/benjaminp\"\u003e\u003ccode\u003e@​benjaminp\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/werkt\"\u003e\u003ccode\u003e@​werkt\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/kilink\"\u003e\u003ccode\u003e@​kilink\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/vimanikag\"\u003e\u003ccode\u003e@​vimanikag\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3abc0e6e1f4981017b7117e47e1844a318a51f24\"\u003e\u003ccode\u003e3abc0e6\u003c/code\u003e\u003c/a\u003e Bump version to 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/cbfe6c1ccaf0d9480daa8faa3e37a117adb798ba\"\u003e\u003ccode\u003ecbfe6c1\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a0f3520ad0bf5186f84d48b7df6e2555e8b16da8\"\u003e\u003ccode\u003ea0f3520\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12295\"\u003e#12295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7ef13f40a6d9cdaccd0c064b5bd3745f9518781e\"\u003e\u003ccode\u003e7ef13f4\u003c/code\u003e\u003c/a\u003e Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/14fd8eff28d55fae4a791b256602d83a5fb9d848\"\u003e\u003ccode\u003e14fd8ef\u003c/code\u003e\u003c/a\u003e xds: xdsClient caches transient error for new watchers (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/653d076c605a9066cf6ae484921058580df2437d\"\u003e\u003ccode\u003e653d076\u003c/code\u003e\u003c/a\u003e xds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5c2b1aa51608b1fff016a313d8ee65f92e8d23d\"\u003e\u003ccode\u003ea5c2b1a\u003c/code\u003e\u003c/a\u003e netty: Count sent RST_STREAMs against limit (1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/0d3e8283a8105a7bbf1bf746d96cac1e363de2e3\"\u003e\u003ccode\u003e0d3e828\u003c/code\u003e\u003c/a\u003e xds: Use a different log name for XdsClientImpl and ControlPlaneClient (1.75....\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/d750e9df576a63f8b0d55eefc730282dc60f99d1\"\u003e\u003ccode\u003ed750e9d\u003c/code\u003e\u003c/a\u003e Upgrade to Netty 4.1.124.Final (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/19c579e8a93cc0660df1523b5740eae9aa888a09\"\u003e\u003ccode\u003e19c579e\u003c/code\u003e\u003c/a\u003e Bump versions of dependencies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12252\"\u003e#12252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.75.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-services` from 1.70.0 to 1.75.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-services's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.75.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ebinder: Introduce server pre-authorization (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12127\"\u003e#12127\u003c/a\u003e). 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 \u0026quot;keep-alive\u0026quot; and \u0026quot;background activity launch\u0026quot; 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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ecore: \u003ccode\u003egrpc-timeout\u003c/code\u003e should always be positive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12201\"\u003e#12201\u003c/a\u003e) (6dfa03c51). 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\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecore: Improved DEADLINE_EXCEEDED message for delayed calls (6ff8ecac0). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: PriorityLB now only uses the failOverTimer to start additional priorities, not fail RPCs (c4256add4). You should no longer see “Connection timeout for priority” errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003enetty: Count sent RST_STREAMs against \u003ccode\u003eNettyServerBuilder.maxRstFramesPerWindow()\u003c/code\u003e limit (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e). This extends the Rapid Reset tool to also cover MadeYouReset. the reset stream count will cause a 420 \u0026quot;Enhance your calm response\u0026quot; to be sent. This depends on Netty 4.1.124 for a bug fix to actually call the encoder by the frame writer.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Convert CdsLb to \u003ccode\u003eXdsDepManager\u003c/code\u003e (297ab05ef). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecensus: APIs for stats and tracing (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12050\"\u003e#12050\u003c/a\u003e) (919370172). Client channel and server builders with interceptors and factories respectively for stats and tracing.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003estub: simplify \u003ccode\u003eBlockingClientCall\u003c/code\u003e infinite blocking (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12217\"\u003e#12217\u003c/a\u003e) (ba0a7329d). Move deadline computation into overloads with finite timeouts. Blocking calls without timeouts now do not have to read the clock.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Do RLS fallback policy eagar start (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12211\"\u003e#12211\u003c/a\u003e) (42e1829b3). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Aggregate cluster fixes (A75) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12186\"\u003e#12186\u003c/a\u003e) (7e982e48a). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: set size correctly for sets and maps in handling \u003ccode\u003eMetadata\u003c/code\u003e values to be exchanged during a call (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12229\"\u003e#12229\u003c/a\u003e) (80217275d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: xdsClient cache transient error for new watchers (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12291\"\u003e#12291\u003c/a\u003e). When a resource update is NACKed, cache the error and update new watchers that get added with that error instead of making them hang.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e). If a LB policy gives extraneous updates with state CONNECTING, then it was possible to re-create \u003ccode\u003efailOverTimer\u003c/code\u003e 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Use a different log name for \u003ccode\u003eXdsClientImpl\u003c/code\u003e and \u003ccode\u003eControlPlaneClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12287\"\u003e#12287\u003c/a\u003e). \u003ccode\u003eControlPlaneClient\u003c/code\u003e uses \u0026quot;xds-cp-client\u0026quot; now instead of \u0026quot;xds-client\u0026quot; while logging.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to Netty 4.1.124.Final (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e). This implicitly disables \u003ccode\u003eNettyAdaptiveCumulator\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11284\"\u003e#11284\u003c/a\u003e), 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebazel: Use \u003ccode\u003ejar_jar\u003c/code\u003e to avoid xds deps (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12243\"\u003e#12243\u003c/a\u003e) (8f09b9689). The //xds and //xds:orca targets now use \u003ccode\u003ejar_jar\u003c/code\u003e 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\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClarify requirements for creating a cross-user Channel. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12181\"\u003e#12181\u003c/a\u003e). The \u003ccode\u003e@SystemApi\u003c/code\u003e 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 \u003ccode\u003eBinderChannelBuilder#bindAsUser\u003c/code\u003e has always required SDK_INT \u0026gt;= 30. This change just copies that requirement forward to its replacement APIs in \u003ccode\u003eAndroidComponentAddress\u003c/code\u003e and the TARGET_ANDROID_USER \u003ccode\u003eNameResolver.Args\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: Add more Javadoc for \u003ccode\u003eNameResolver.Listener2\u003c/code\u003e interface (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12220\"\u003e#12220\u003c/a\u003e) (d352540a0)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/benjaminp\"\u003e\u003ccode\u003e@​benjaminp\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/werkt\"\u003e\u003ccode\u003e@​werkt\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/kilink\"\u003e\u003ccode\u003e@​kilink\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/vimanikag\"\u003e\u003ccode\u003e@​vimanikag\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3abc0e6e1f4981017b7117e47e1844a318a51f24\"\u003e\u003ccode\u003e3abc0e6\u003c/code\u003e\u003c/a\u003e Bump version to 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/cbfe6c1ccaf0d9480daa8faa3e37a117adb798ba\"\u003e\u003ccode\u003ecbfe6c1\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a0f3520ad0bf5186f84d48b7df6e2555e8b16da8\"\u003e\u003ccode\u003ea0f3520\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12295\"\u003e#12295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7ef13f40a6d9cdaccd0c064b5bd3745f9518781e\"\u003e\u003ccode\u003e7ef13f4\u003c/code\u003e\u003c/a\u003e Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/14fd8eff28d55fae4a791b256602d83a5fb9d848\"\u003e\u003ccode\u003e14fd8ef\u003c/code\u003e\u003c/a\u003e xds: xdsClient caches transient error for new watchers (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/653d076c605a9066cf6ae484921058580df2437d\"\u003e\u003ccode\u003e653d076\u003c/code\u003e\u003c/a\u003e xds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5c2b1aa51608b1fff016a313d8ee65f92e8d23d\"\u003e\u003ccode\u003ea5c2b1a\u003c/code\u003e\u003c/a\u003e netty: Count sent RST_STREAMs against limit (1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/0d3e8283a8105a7bbf1bf746d96cac1e363de2e3\"\u003e\u003ccode\u003e0d3e828\u003c/code\u003e\u003c/a\u003e xds: Use a different log name for XdsClientImpl and ControlPlaneClient (1.75....\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/d750e9df576a63f8b0d55eefc730282dc60f99d1\"\u003e\u003ccode\u003ed750e9d\u003c/code\u003e\u003c/a\u003e Upgrade to Netty 4.1.124.Final (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/19c579e8a93cc0660df1523b5740eae9aa888a09\"\u003e\u003ccode\u003e19c579e\u003c/code\u003e\u003c/a\u003e Bump versions of dependencies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12252\"\u003e#12252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.75.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/hemicharly/grpc-spring-boot-3/pull/61","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemicharly%2Fgrpc-spring-boot-3/issues/61","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/61/packages"},{"uuid":"3289433872","node_id":"PR_kwDOK4L0VM6iAPsU","number":59,"state":"closed","title":"chore(deps): bump io.grpc.version from 1.70.0 to 1.74.0","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-08-25T20:38:10.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-08-04T13:22:35.000Z","updated_at":"2025-08-25T20:38:10.000Z","time_to_close":1840535,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"io.grpc.version","old_version":"1.70.0","new_version":"1.74.0","repository_url":null}],"path":null,"ecosystem":"maven"},"body":"Bumps `io.grpc.version` from 1.70.0 to 1.74.0.\nUpdates `io.grpc:grpc-netty-shaded` from 1.70.0 to 1.74.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-netty-shaded's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Default to \u003ccode\u003e@generated=omit\u003c/code\u003e (f8700a13a). This omits \u003ccode\u003ejavax.annotation.Generated\u003c/code\u003e from the generated code and makes the \u003ccode\u003eorg.apache.tomcat:annotations-api\u003c/code\u003e compile-only dependency unnecessary (README and examples changes forthcoming; we delayed those changes until the release landed). You can use the option \u003ccode\u003e@generated=javax\u003c/code\u003e for the previous behavior, but please also file an issue so we can develop alternatives\u003c/li\u003e\n\u003cli\u003ecompiler: generate blocking v2 unary calls that throw StatusException (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12126\"\u003e#12126\u003c/a\u003e) (a16d65591). Previously, the new blocking stub API was identical to the older blocking stub for unary RPCs and used the unchecked \u003ccode\u003eStatusRuntimeException\u003c/code\u003e. However, feedback demonstrated it was confusing to mix that with the checked \u003ccode\u003eStatusException\u003c/code\u003e in \u003ccode\u003eBlockingClientCall\u003c/code\u003e. Now the new blocking stub uses StatusException throughout. grpc-java continues to support the old generated code, but the version of protoc-gen-grpc-java will dictate which API you see. If you support multiple generated code versions, you can use the older blocking v1 stub for unary RPCs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Fix a race that caused RPCs to hang on start when a GOAWAY was received while the RPCs’ headers were being written to the OS (b04c673fd, 15c757398). This was a very old race, not a recent regression. All streams should now properly fail instead of hanging, although in some cases they may be transparently retried\u003c/li\u003e\n\u003cli\u003eutil: OutlierDetection should use nanoTime, not currentTimeMillis (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12110\"\u003e#12110\u003c/a\u003e) (1c4309899). Previously, changes in the wall time would impact its accounting\u003c/li\u003e\n\u003cli\u003exds: Don't allow hostnames in address field in EDS (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12123\"\u003e#12123\u003c/a\u003e) (482dc5c1c). Only IP addresses were handled properly, and only IP addresses should be handled per gRFC A27\u003c/li\u003e\n\u003cli\u003exds: In resource handling, call onError() for RDS and EDS NACKs (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12122\"\u003e#12122\u003c/a\u003e) (efe9ccc22). Previously the resource was NACKed, but gRPC would continue waiting for the resource until a timeout was reached and claim the control plane didn’t send the resource. Now it will fail quickly with an informative error\u003c/li\u003e\n\u003cli\u003exds: Implement equals in RingHashConfig (a5eaa66cc). Previously all configuration refreshes were considered a new config, which had the potential for causing unexpected inefficiency problems. This was noticed by new code for gRFC A74 xDS Config Tears that is not yet enabled, so there are no known problems that this caused\u003c/li\u003e\n\u003cli\u003eLBs should avoid calling LBs after lb.shutdown() (1df2a3305). This fixed pick_first and ring_hash behavior that could cause rare and “random” races in parent load balancers like a \u003ccode\u003eNullPointerException\u003c/code\u003e in \u003ccode\u003eClusterImplLoadBalancer.createSubchannel()\u003c/code\u003e, which had a ring_hash child. This is most likely to help xDS, as it heavily uses hierarchical LB policies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Deliver addresses in a random order to shuffle connection creation ordering (f07eb47ca). Previously, connections were created in-order (but non-blocking), so in a fast network the first address could be more likely to connect first given a \u0026quot;microsecond\u0026quot; headstart. That first connection then receives all the buffered RPCs, which could cause temporary, but repeated, load imbalances of the same backend when all clients receive the same list of addresses in the same order. This has been seen in practice, but it is unclear how often it happens. Shuffling has the potential to improve load distribution of new clients when using round_robin, weighted_round_robin, and least_request, which connect simultaneously to multiple addresses\u003c/li\u003e\n\u003cli\u003ecore: Use lazy message formatting in checkState (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12144\"\u003e#12144\u003c/a\u003e) (26bd0eee4). This avoids the potential of unnecessarily formatting an exception as a string when a subchannel fails to connect\u003c/li\u003e\n\u003cli\u003ebazel: Migrate java_grpc_library to use DefaultInfo (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12148\"\u003e#12148\u003c/a\u003e) (6f69363d9). This adds compatibility for \u003ccode\u003e--incompatible_disable_target_default_provider_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebinder: Rationalize \u003ca href=\"https://github.com/ThreadSafe-ty\"\u003e\u003ccode\u003e@​ThreadSafe-ty\u003c/code\u003e\u003c/a\u003e inside BinderTransport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12130\"\u003e#12130\u003c/a\u003e) (c20642874)\u003c/li\u003e\n\u003cli\u003ebinder: Cancel checkAuthorization() request if still pending upon termination (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12167\"\u003e#12167\u003c/a\u003e) (30d40a617)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Upgrade Protobuf C++ to 22.5 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11961\"\u003e#11961\u003c/a\u003e) (46485c8b6). This is used by the pre-built protoc-gen-grpc-java plugin on Maven Central. This should have no visible benefit, but gets us closer to upgrading to Protobuf 27 which added edition 2023 support\u003c/li\u003e\n\u003cli\u003erelease: Migrate artifacts publishing changed from legacy OSSRH to Central Portal (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12156\"\u003e#12156\u003c/a\u003e) (f99b2aaef). We aren’t aware of any visible changes to the results on Maven Central\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/9d2c895c29ad505ea564ccf9369678e5478152e5\"\u003e\u003ccode\u003e9d2c895\u003c/code\u003e\u003c/a\u003e Bump version to 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b58900e759483272f6aa12bb8038cf178e62d803\"\u003e\u003ccode\u003eb58900e\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/15c7573988fab5c9893c1d86f0d23f1cd4b683f8\"\u003e\u003ccode\u003e15c7573\u003c/code\u003e\u003c/a\u003e netty: Associate netty stream eagerly to avoid client hang\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b04c673fdfec6191afdca06fa254b9e4da0150f6\"\u003e\u003ccode\u003eb04c673\u003c/code\u003e\u003c/a\u003e Guarantee missing stream promise delivery\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/1df2a330568b2131fd2fda77cf85c948dba19ae0\"\u003e\u003ccode\u003e1df2a33\u003c/code\u003e\u003c/a\u003e LBs should avoid calling LBs after lb.shutdown()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5eaa66ccc2add0c9b78096ca3196ec1c7904c1f\"\u003e\u003ccode\u003ea5eaa66\u003c/code\u003e\u003c/a\u003e xds: Implement equals in RingHashConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/393f02b117a2c2e204029274a9266b5c64124062\"\u003e\u003ccode\u003e393f02b\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Convert CdsLb to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/69b8cf5f2611c580fa1e5ee3a4ad9e42919e49c6\"\u003e\u003ccode\u003e69b8cf5\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Support tracking non-xds resources in XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/98e4252e3408e804162a86e38466a90c5d10a817\"\u003e\u003ccode\u003e98e4252\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: XdsNR should be subscribing to clusters with XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3b63af411d32bb274a69bb14b1e5aac8ffca2f45\"\u003e\u003ccode\u003e3b63af4\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Add logical dns cluster support to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.74.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-protobuf` from 1.70.0 to 1.74.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-protobuf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Default to \u003ccode\u003e@generated=omit\u003c/code\u003e (f8700a13a). This omits \u003ccode\u003ejavax.annotation.Generated\u003c/code\u003e from the generated code and makes the \u003ccode\u003eorg.apache.tomcat:annotations-api\u003c/code\u003e compile-only dependency unnecessary (README and examples changes forthcoming; we delayed those changes until the release landed). You can use the option \u003ccode\u003e@generated=javax\u003c/code\u003e for the previous behavior, but please also file an issue so we can develop alternatives\u003c/li\u003e\n\u003cli\u003ecompiler: generate blocking v2 unary calls that throw StatusException (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12126\"\u003e#12126\u003c/a\u003e) (a16d65591). Previously, the new blocking stub API was identical to the older blocking stub for unary RPCs and used the unchecked \u003ccode\u003eStatusRuntimeException\u003c/code\u003e. However, feedback demonstrated it was confusing to mix that with the checked \u003ccode\u003eStatusException\u003c/code\u003e in \u003ccode\u003eBlockingClientCall\u003c/code\u003e. Now the new blocking stub uses StatusException throughout. grpc-java continues to support the old generated code, but the version of protoc-gen-grpc-java will dictate which API you see. If you support multiple generated code versions, you can use the older blocking v1 stub for unary RPCs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Fix a race that caused RPCs to hang on start when a GOAWAY was received while the RPCs’ headers were being written to the OS (b04c673fd, 15c757398). This was a very old race, not a recent regression. All streams should now properly fail instead of hanging, although in some cases they may be transparently retried\u003c/li\u003e\n\u003cli\u003eutil: OutlierDetection should use nanoTime, not currentTimeMillis (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12110\"\u003e#12110\u003c/a\u003e) (1c4309899). Previously, changes in the wall time would impact its accounting\u003c/li\u003e\n\u003cli\u003exds: Don't allow hostnames in address field in EDS (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12123\"\u003e#12123\u003c/a\u003e) (482dc5c1c). Only IP addresses were handled properly, and only IP addresses should be handled per gRFC A27\u003c/li\u003e\n\u003cli\u003exds: In resource handling, call onError() for RDS and EDS NACKs (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12122\"\u003e#12122\u003c/a\u003e) (efe9ccc22). Previously the resource was NACKed, but gRPC would continue waiting for the resource until a timeout was reached and claim the control plane didn’t send the resource. Now it will fail quickly with an informative error\u003c/li\u003e\n\u003cli\u003exds: Implement equals in RingHashConfig (a5eaa66cc). Previously all configuration refreshes were considered a new config, which had the potential for causing unexpected inefficiency problems. This was noticed by new code for gRFC A74 xDS Config Tears that is not yet enabled, so there are no known problems that this caused\u003c/li\u003e\n\u003cli\u003eLBs should avoid calling LBs after lb.shutdown() (1df2a3305). This fixed pick_first and ring_hash behavior that could cause rare and “random” races in parent load balancers like a \u003ccode\u003eNullPointerException\u003c/code\u003e in \u003ccode\u003eClusterImplLoadBalancer.createSubchannel()\u003c/code\u003e, which had a ring_hash child. This is most likely to help xDS, as it heavily uses hierarchical LB policies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Deliver addresses in a random order to shuffle connection creation ordering (f07eb47ca). Previously, connections were created in-order (but non-blocking), so in a fast network the first address could be more likely to connect first given a \u0026quot;microsecond\u0026quot; headstart. That first connection then receives all the buffered RPCs, which could cause temporary, but repeated, load imbalances of the same backend when all clients receive the same list of addresses in the same order. This has been seen in practice, but it is unclear how often it happens. Shuffling has the potential to improve load distribution of new clients when using round_robin, weighted_round_robin, and least_request, which connect simultaneously to multiple addresses\u003c/li\u003e\n\u003cli\u003ecore: Use lazy message formatting in checkState (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12144\"\u003e#12144\u003c/a\u003e) (26bd0eee4). This avoids the potential of unnecessarily formatting an exception as a string when a subchannel fails to connect\u003c/li\u003e\n\u003cli\u003ebazel: Migrate java_grpc_library to use DefaultInfo (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12148\"\u003e#12148\u003c/a\u003e) (6f69363d9). This adds compatibility for \u003ccode\u003e--incompatible_disable_target_default_provider_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebinder: Rationalize \u003ca href=\"https://github.com/ThreadSafe-ty\"\u003e\u003ccode\u003e@​ThreadSafe-ty\u003c/code\u003e\u003c/a\u003e inside BinderTransport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12130\"\u003e#12130\u003c/a\u003e) (c20642874)\u003c/li\u003e\n\u003cli\u003ebinder: Cancel checkAuthorization() request if still pending upon termination (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12167\"\u003e#12167\u003c/a\u003e) (30d40a617)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Upgrade Protobuf C++ to 22.5 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11961\"\u003e#11961\u003c/a\u003e) (46485c8b6). This is used by the pre-built protoc-gen-grpc-java plugin on Maven Central. This should have no visible benefit, but gets us closer to upgrading to Protobuf 27 which added edition 2023 support\u003c/li\u003e\n\u003cli\u003erelease: Migrate artifacts publishing changed from legacy OSSRH to Central Portal (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12156\"\u003e#12156\u003c/a\u003e) (f99b2aaef). We aren’t aware of any visible changes to the results on Maven Central\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/9d2c895c29ad505ea564ccf9369678e5478152e5\"\u003e\u003ccode\u003e9d2c895\u003c/code\u003e\u003c/a\u003e Bump version to 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b58900e759483272f6aa12bb8038cf178e62d803\"\u003e\u003ccode\u003eb58900e\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/15c7573988fab5c9893c1d86f0d23f1cd4b683f8\"\u003e\u003ccode\u003e15c7573\u003c/code\u003e\u003c/a\u003e netty: Associate netty stream eagerly to avoid client hang\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b04c673fdfec6191afdca06fa254b9e4da0150f6\"\u003e\u003ccode\u003eb04c673\u003c/code\u003e\u003c/a\u003e Guarantee missing stream promise delivery\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/1df2a330568b2131fd2fda77cf85c948dba19ae0\"\u003e\u003ccode\u003e1df2a33\u003c/code\u003e\u003c/a\u003e LBs should avoid calling LBs after lb.shutdown()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5eaa66ccc2add0c9b78096ca3196ec1c7904c1f\"\u003e\u003ccode\u003ea5eaa66\u003c/code\u003e\u003c/a\u003e xds: Implement equals in RingHashConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/393f02b117a2c2e204029274a9266b5c64124062\"\u003e\u003ccode\u003e393f02b\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Convert CdsLb to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/69b8cf5f2611c580fa1e5ee3a4ad9e42919e49c6\"\u003e\u003ccode\u003e69b8cf5\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Support tracking non-xds resources in XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/98e4252e3408e804162a86e38466a90c5d10a817\"\u003e\u003ccode\u003e98e4252\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: XdsNR should be subscribing to clusters with XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3b63af411d32bb274a69bb14b1e5aac8ffca2f45\"\u003e\u003ccode\u003e3b63af4\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Add logical dns cluster support to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.74.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-stub` from 1.70.0 to 1.74.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-stub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Default to \u003ccode\u003e@generated=omit\u003c/code\u003e (f8700a13a). This omits \u003ccode\u003ejavax.annotation.Generated\u003c/code\u003e from the generated code and makes the \u003ccode\u003eorg.apache.tomcat:annotations-api\u003c/code\u003e compile-only dependency unnecessary (README and examples changes forthcoming; we delayed those changes until the release landed). You can use the option \u003ccode\u003e@generated=javax\u003c/code\u003e for the previous behavior, but please also file an issue so we can develop alternatives\u003c/li\u003e\n\u003cli\u003ecompiler: generate blocking v2 unary calls that throw StatusException (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12126\"\u003e#12126\u003c/a\u003e) (a16d65591). Previously, the new blocking stub API was identical to the older blocking stub for unary RPCs and used the unchecked \u003ccode\u003eStatusRuntimeException\u003c/code\u003e. However, feedback demonstrated it was confusing to mix that with the checked \u003ccode\u003eStatusException\u003c/code\u003e in \u003ccode\u003eBlockingClientCall\u003c/code\u003e. Now the new blocking stub uses StatusException throughout. grpc-java continues to support the old generated code, but the version of protoc-gen-grpc-java will dictate which API you see. If you support multiple generated code versions, you can use the older blocking v1 stub for unary RPCs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Fix a race that caused RPCs to hang on start when a GOAWAY was received while the RPCs’ headers were being written to the OS (b04c673fd, 15c757398). This was a very old race, not a recent regression. All streams should now properly fail instead of hanging, although in some cases they may be transparently retried\u003c/li\u003e\n\u003cli\u003eutil: OutlierDetection should use nanoTime, not currentTimeMillis (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12110\"\u003e#12110\u003c/a\u003e) (1c4309899). Previously, changes in the wall time would impact its accounting\u003c/li\u003e\n\u003cli\u003exds: Don't allow hostnames in address field in EDS (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12123\"\u003e#12123\u003c/a\u003e) (482dc5c1c). Only IP addresses were handled properly, and only IP addresses should be handled per gRFC A27\u003c/li\u003e\n\u003cli\u003exds: In resource handling, call onError() for RDS and EDS NACKs (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12122\"\u003e#12122\u003c/a\u003e) (efe9ccc22). Previously the resource was NACKed, but gRPC would continue waiting for the resource until a timeout was reached and claim the control plane didn’t send the resource. Now it will fail quickly with an informative error\u003c/li\u003e\n\u003cli\u003exds: Implement equals in RingHashConfig (a5eaa66cc). Previously all configuration refreshes were considered a new config, which had the potential for causing unexpected inefficiency problems. This was noticed by new code for gRFC A74 xDS Config Tears that is not yet enabled, so there are no known problems that this caused\u003c/li\u003e\n\u003cli\u003eLBs should avoid calling LBs after lb.shutdown() (1df2a3305). This fixed pick_first and ring_hash behavior that could cause rare and “random” races in parent load balancers like a \u003ccode\u003eNullPointerException\u003c/code\u003e in \u003ccode\u003eClusterImplLoadBalancer.createSubchannel()\u003c/code\u003e, which had a ring_hash child. This is most likely to help xDS, as it heavily uses hierarchical LB policies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Deliver addresses in a random order to shuffle connection creation ordering (f07eb47ca). Previously, connections were created in-order (but non-blocking), so in a fast network the first address could be more likely to connect first given a \u0026quot;microsecond\u0026quot; headstart. That first connection then receives all the buffered RPCs, which could cause temporary, but repeated, load imbalances of the same backend when all clients receive the same list of addresses in the same order. This has been seen in practice, but it is unclear how often it happens. Shuffling has the potential to improve load distribution of new clients when using round_robin, weighted_round_robin, and least_request, which connect simultaneously to multiple addresses\u003c/li\u003e\n\u003cli\u003ecore: Use lazy message formatting in checkState (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12144\"\u003e#12144\u003c/a\u003e) (26bd0eee4). This avoids the potential of unnecessarily formatting an exception as a string when a subchannel fails to connect\u003c/li\u003e\n\u003cli\u003ebazel: Migrate java_grpc_library to use DefaultInfo (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12148\"\u003e#12148\u003c/a\u003e) (6f69363d9). This adds compatibility for \u003ccode\u003e--incompatible_disable_target_default_provider_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebinder: Rationalize \u003ca href=\"https://github.com/ThreadSafe-ty\"\u003e\u003ccode\u003e@​ThreadSafe-ty\u003c/code\u003e\u003c/a\u003e inside BinderTransport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12130\"\u003e#12130\u003c/a\u003e) (c20642874)\u003c/li\u003e\n\u003cli\u003ebinder: Cancel checkAuthorization() request if still pending upon termination (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12167\"\u003e#12167\u003c/a\u003e) (30d40a617)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Upgrade Protobuf C++ to 22.5 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11961\"\u003e#11961\u003c/a\u003e) (46485c8b6). This is used by the pre-built protoc-gen-grpc-java plugin on Maven Central. This should have no visible benefit, but gets us closer to upgrading to Protobuf 27 which added edition 2023 support\u003c/li\u003e\n\u003cli\u003erelease: Migrate artifacts publishing changed from legacy OSSRH to Central Portal (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12156\"\u003e#12156\u003c/a\u003e) (f99b2aaef). We aren’t aware of any visible changes to the results on Maven Central\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/9d2c895c29ad505ea564ccf9369678e5478152e5\"\u003e\u003ccode\u003e9d2c895\u003c/code\u003e\u003c/a\u003e Bump version to 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b58900e759483272f6aa12bb8038cf178e62d803\"\u003e\u003ccode\u003eb58900e\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/15c7573988fab5c9893c1d86f0d23f1cd4b683f8\"\u003e\u003ccode\u003e15c7573\u003c/code\u003e\u003c/a\u003e netty: Associate netty stream eagerly to avoid client hang\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b04c673fdfec6191afdca06fa254b9e4da0150f6\"\u003e\u003ccode\u003eb04c673\u003c/code\u003e\u003c/a\u003e Guarantee missing stream promise delivery\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/1df2a330568b2131fd2fda77cf85c948dba19ae0\"\u003e\u003ccode\u003e1df2a33\u003c/code\u003e\u003c/a\u003e LBs should avoid calling LBs after lb.shutdown()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5eaa66ccc2add0c9b78096ca3196ec1c7904c1f\"\u003e\u003ccode\u003ea5eaa66\u003c/code\u003e\u003c/a\u003e xds: Implement equals in RingHashConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/393f02b117a2c2e204029274a9266b5c64124062\"\u003e\u003ccode\u003e393f02b\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Convert CdsLb to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/69b8cf5f2611c580fa1e5ee3a4ad9e42919e49c6\"\u003e\u003ccode\u003e69b8cf5\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Support tracking non-xds resources in XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/98e4252e3408e804162a86e38466a90c5d10a817\"\u003e\u003ccode\u003e98e4252\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: XdsNR should be subscribing to clusters with XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3b63af411d32bb274a69bb14b1e5aac8ffca2f45\"\u003e\u003ccode\u003e3b63af4\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Add logical dns cluster support to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.74.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-services` from 1.70.0 to 1.74.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-services's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Default to \u003ccode\u003e@generated=omit\u003c/code\u003e (f8700a13a). This omits \u003ccode\u003ejavax.annotation.Generated\u003c/code\u003e from the generated code and makes the \u003ccode\u003eorg.apache.tomcat:annotations-api\u003c/code\u003e compile-only dependency unnecessary (README and examples changes forthcoming; we delayed those changes until the release landed). You can use the option \u003ccode\u003e@generated=javax\u003c/code\u003e for the previous behavior, but please also file an issue so we can develop alternatives\u003c/li\u003e\n\u003cli\u003ecompiler: generate blocking v2 unary calls that throw StatusException (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12126\"\u003e#12126\u003c/a\u003e) (a16d65591). Previously, the new blocking stub API was identical to the older blocking stub for unary RPCs and used the unchecked \u003ccode\u003eStatusRuntimeException\u003c/code\u003e. However, feedback demonstrated it was confusing to mix that with the checked \u003ccode\u003eStatusException\u003c/code\u003e in \u003ccode\u003eBlockingClientCall\u003c/code\u003e. Now the new blocking stub uses StatusException throughout. grpc-java continues to support the old generated code, but the version of protoc-gen-grpc-java will dictate which API you see. If you support multiple generated code versions, you can use the older blocking v1 stub for unary RPCs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Fix a race that caused RPCs to hang on start when a GOAWAY was received while the RPCs’ headers were being written to the OS (b04c673fd, 15c757398). This was a very old race, not a recent regression. All streams should now properly fail instead of hanging, although in some cases they may be transparently retried\u003c/li\u003e\n\u003cli\u003eutil: OutlierDetection should use nanoTime, not currentTimeMillis (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12110\"\u003e#12110\u003c/a\u003e) (1c4309899). Previously, changes in the wall time would impact its accounting\u003c/li\u003e\n\u003cli\u003exds: Don't allow hostnames in address field in EDS (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12123\"\u003e#12123\u003c/a\u003e) (482dc5c1c). Only IP addresses were handled properly, and only IP addresses should be handled per gRFC A27\u003c/li\u003e\n\u003cli\u003exds: In resource handling, call onError() for RDS and EDS NACKs (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12122\"\u003e#12122\u003c/a\u003e) (efe9ccc22). Previously the resource was NACKed, but gRPC would continue waiting for the resource until a timeout was reached and claim the control plane didn’t send the resource. Now it will fail quickly with an informative error\u003c/li\u003e\n\u003cli\u003exds: Implement equals in RingHashConfig (a5eaa66cc). Previously all configuration refreshes were considered a new config, which had the potential for causing unexpected inefficiency problems. This was noticed by new code for gRFC A74 xDS Config Tears that is not yet enabled, so there are no known problems that this caused\u003c/li\u003e\n\u003cli\u003eLBs should avoid calling LBs after lb.shutdown() (1df2a3305). This fixed pick_first and ring_hash behavior that could cause rare and “random” races in parent load balancers like a \u003ccode\u003eNullPointerException\u003c/code\u003e in \u003ccode\u003eClusterImplLoadBalancer.createSubchannel()\u003c/code\u003e, which had a ring_hash child. This is most likely to help xDS, as it heavily uses hierarchical LB policies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Deliver addresses in a random order to shuffle connection creation ordering (f07eb47ca). Previously, connections were created in-order (but non-blocking), so in a fast network the first address could be more likely to connect first given a \u0026quot;microsecond\u0026quot; headstart. That first connection then receives all the buffered RPCs, which could cause temporary, but repeated, load imbalances of the same backend when all clients receive the same list of addresses in the same order. This has been seen in practice, but it is unclear how often it happens. Shuffling has the potential to improve load distribution of new clients when using round_robin, weighted_round_robin, and least_request, which connect simultaneously to multiple addresses\u003c/li\u003e\n\u003cli\u003ecore: Use lazy message formatting in checkState (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12144\"\u003e#12144\u003c/a\u003e) (26bd0eee4). This avoids the potential of unnecessarily formatting an exception as a string when a subchannel fails to connect\u003c/li\u003e\n\u003cli\u003ebazel: Migrate java_grpc_library to use DefaultInfo (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12148\"\u003e#12148\u003c/a\u003e) (6f69363d9). This adds compatibility for \u003ccode\u003e--incompatible_disable_target_default_provider_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebinder: Rationalize \u003ca href=\"https://github.com/ThreadSafe-ty\"\u003e\u003ccode\u003e@​ThreadSafe-ty\u003c/code\u003e\u003c/a\u003e inside BinderTransport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12130\"\u003e#12130\u003c/a\u003e) (c20642874)\u003c/li\u003e\n\u003cli\u003ebinder: Cancel checkAuthorization() request if still pending upon termination (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12167\"\u003e#12167\u003c/a\u003e) (30d40a617)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Upgrade Protobuf C++ to 22.5 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11961\"\u003e#11961\u003c/a\u003e) (46485c8b6). This is used by the pre-built protoc-gen-grpc-java plugin on Maven Central. This should have no visible benefit, but gets us closer to upgrading to Protobuf 27 which added edition 2023 support\u003c/li\u003e\n\u003cli\u003erelease: Migrate artifacts publishing changed from legacy OSSRH to Central Portal (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12156\"\u003e#12156\u003c/a\u003e) (f99b2aaef). We aren’t aware of any visible changes to the results on Maven Central\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/9d2c895c29ad505ea564ccf9369678e5478152e5\"\u003e\u003ccode\u003e9d2c895\u003c/code\u003e\u003c/a\u003e Bump version to 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b58900e759483272f6aa12bb8038cf178e62d803\"\u003e\u003ccode\u003eb58900e\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/15c7573988fab5c9893c1d86f0d23f1cd4b683f8\"\u003e\u003ccode\u003e15c7573\u003c/code\u003e\u003c/a\u003e netty: Associate netty stream eagerly to avoid client hang\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b04c673fdfec6191afdca06fa254b9e4da0150f6\"\u003e\u003ccode\u003eb04c673\u003c/code\u003e\u003c/a\u003e Guarantee missing stream promise delivery\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/1df2a330568b2131fd2fda77cf85c948dba19ae0\"\u003e\u003ccode\u003e1df2a33\u003c/code\u003e\u003c/a\u003e LBs should avoid calling LBs after lb.shutdown()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5eaa66ccc2add0c9b78096ca3196ec1c7904c1f\"\u003e\u003ccode\u003ea5eaa66\u003c/code\u003e\u003c/a\u003e xds: Implement equals in RingHashConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/393f02b117a2c2e204029274a9266b5c64124062\"\u003e\u003ccode\u003e393f02b\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Convert CdsLb to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/69b8cf5f2611c580fa1e5ee3a4ad9e42919e49c6\"\u003e\u003ccode\u003e69b8cf5\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Support tracking non-xds resources in XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/98e4252e3408e804162a86e38466a90c5d10a817\"\u003e\u003ccode\u003e98e4252\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: XdsNR should be subscribing to clusters with XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3b63af411d32bb274a69bb14b1e5aac8ffca2f45\"\u003e\u003ccode\u003e3b63af4\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Add logical dns cluster support to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.74.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/hemicharly/grpc-spring-boot-3/pull/59","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemicharly%2Fgrpc-spring-boot-3/issues/59","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/59/packages"},{"uuid":"2587336206","node_id":"PR_kwDOKVqxZ86aN54O","number":1256,"state":"open","title":"chore(deps): bump io.grpc.version from 1.55.1 to 1.73.0 in /backend","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-06-12T13:20:13.000Z","updated_at":"2025-06-12T13:20:14.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"io.grpc.version","old_version":"1.55.1","new_version":"1.73.0","repository_url":null}],"path":"/backend","ecosystem":"maven"},"body":"Bumps `io.grpc.version` from 1.55.1 to 1.73.0.\nUpdates `io.grpc:grpc-okhttp` from 1.55.1 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-okhttp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cp\u003eapi: Remove mention of \u0026quot;epoch\u0026quot; from Ticker.nanoTime() javadocs (84bd01454)\u003c/p\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.55.1...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-netty` from 1.55.1 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-netty's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cp\u003eapi: Remove mention of \u0026quot;epoch\u0026quot; from Ticker.nanoTime() javadocs (84bd01454)\u003c/p\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.55.1...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-protobuf` from 1.55.1 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-protobuf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cp\u003eapi: Remove mention of \u0026quot;epoch\u0026quot; from Ticker.nanoTime() javadocs (84bd01454)\u003c/p\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.55.1...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-stub` from 1.55.1 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-stub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cp\u003eapi: Remove mention of \u0026quot;epoch\u0026quot; from Ticker.nanoTime() javadocs (84bd01454)\u003c/p\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.55.1...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-core` from 1.55.1 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cp\u003eapi: Remove mention of \u0026quot;epoch\u0026quot; from Ticker.nanoTime() javadocs (84bd01454)\u003c/p\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.55.1...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/utmstack/UTMStack/pull/1256","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/utmstack%2FUTMStack/issues/1256","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1256/packages"},{"uuid":"2560168479","node_id":"PR_kwDOK4L0VM6YmRIf","number":55,"state":"open","title":"chore(deps): bump io.grpc.version from 1.70.0 to 1.73.0","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-06-02T10:46:08.000Z","updated_at":"2025-06-02T10:46:09.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"io.grpc.version","old_version":"1.70.0","new_version":"1.73.0","repository_url":null}],"path":null,"ecosystem":"maven"},"body":"Bumps `io.grpc.version` from 1.70.0 to 1.73.0.\nUpdates `io.grpc:grpc-netty-shaded` from 1.70.0 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-netty-shaded's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003cli\u003exds: avoid unnecessary dns lookup for CIDR addresses (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11932\"\u003e#11932\u003c/a\u003e) (602aece08)\u003c/li\u003e\n\u003cli\u003enetty: Swap to UniformStreamByteDistributor (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11954\"\u003e#11954\u003c/a\u003e) (2f52a0036). gRPC will no longer observe the HTTP/2 priorities, which were not used directly by gRPC and deprecated in RFC 9113\u003c/li\u003e\n\u003cli\u003ecore: Avoid Set.removeAll() when passing a possibly-large List (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11994\"\u003e#11994\u003c/a\u003e) (666136b4b)\u003c/li\u003e\n\u003cli\u003estub: trailersFromThrowable() metadata should be copied (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11979\"\u003e#11979\u003c/a\u003e) (a6e1c1f09)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003exds: xDS-based HTTP CONNECT configuration (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11861\"\u003e#11861\u003c/a\u003e) (12197065f)\u003c/li\u003e\n\u003cli\u003enetty: Per-rpc authority verification against peer cert subject names. Overriding transport authority at rpc time is only allowed when using TlsChannelCredentials. The per-rpc authority verification feature is guarded by the environment variable GRPC_ENABLE_PER_RPC_AUTHORITY_CHECK in this release. When this is false or not set, the rpc will not fail when the authority verification fails but a warning will be logged. In a subsequent release the usage of this environment variable will be removed and RPCs will start failing if the authority doesn't match the peer certificate names. The environment variable is temporary; if you are depending on the existing insecure behavior, please file an issue (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11724\"\u003e#11724\u003c/a\u003e) (cdab410b8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/panchenko\"\u003e\u003ccode\u003e@​panchenko\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/JoeCqupt\"\u003e\u003ccode\u003e@​JoeCqupt\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eV1.71.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Enable Xds Client Fallback by default.  This allows having a backup xDS server as described in gRFC \u003ca href=\"https://github.com/grpc/proposal/blob/master/A71-xds-fallback.md\"\u003eA71-xds-fallback.md\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11817\"\u003e#11817\u003c/a\u003e) (176f3eed1)\u003c/li\u003e\n\u003cli\u003eprotobuf: Experimental API marshallerWithRecursionLimit in \u003ccode\u003eProtoUtils\u003c/code\u003e is now stabilized (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11884\"\u003e#11884\u003c/a\u003e) (90b1c4fe9)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Cluster weights should be uint32 (199a7ea3e). They were previously processed as int32, although the sum of weights was checked to be positive. So this would have caused a very large weight to never be selected and to reduce the chances of immediately-following clusters to be selected. There have been no reports of control planes using such large weights\u003c/li\u003e\n\u003cli\u003exds: Fix an unlikely infinite loop triggered by route update (199a7ea3e). Triggering required the old cluster to no longer be used, an RPC processing when the update arrived, and for a RPC to not match any route in the new config. There have been no reports of this actually happening\u003c/li\u003e\n\u003cli\u003ecore: Release data frame if it is received before the headers (dc316f7fd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-protobuf` from 1.70.0 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-protobuf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003cli\u003exds: avoid unnecessary dns lookup for CIDR addresses (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11932\"\u003e#11932\u003c/a\u003e) (602aece08)\u003c/li\u003e\n\u003cli\u003enetty: Swap to UniformStreamByteDistributor (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11954\"\u003e#11954\u003c/a\u003e) (2f52a0036). gRPC will no longer observe the HTTP/2 priorities, which were not used directly by gRPC and deprecated in RFC 9113\u003c/li\u003e\n\u003cli\u003ecore: Avoid Set.removeAll() when passing a possibly-large List (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11994\"\u003e#11994\u003c/a\u003e) (666136b4b)\u003c/li\u003e\n\u003cli\u003estub: trailersFromThrowable() metadata should be copied (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11979\"\u003e#11979\u003c/a\u003e) (a6e1c1f09)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003exds: xDS-based HTTP CONNECT configuration (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11861\"\u003e#11861\u003c/a\u003e) (12197065f)\u003c/li\u003e\n\u003cli\u003enetty: Per-rpc authority verification against peer cert subject names. Overriding transport authority at rpc time is only allowed when using TlsChannelCredentials. The per-rpc authority verification feature is guarded by the environment variable GRPC_ENABLE_PER_RPC_AUTHORITY_CHECK in this release. When this is false or not set, the rpc will not fail when the authority verification fails but a warning will be logged. In a subsequent release the usage of this environment variable will be removed and RPCs will start failing if the authority doesn't match the peer certificate names. The environment variable is temporary; if you are depending on the existing insecure behavior, please file an issue (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11724\"\u003e#11724\u003c/a\u003e) (cdab410b8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/panchenko\"\u003e\u003ccode\u003e@​panchenko\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/JoeCqupt\"\u003e\u003ccode\u003e@​JoeCqupt\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eV1.71.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Enable Xds Client Fallback by default.  This allows having a backup xDS server as described in gRFC \u003ca href=\"https://github.com/grpc/proposal/blob/master/A71-xds-fallback.md\"\u003eA71-xds-fallback.md\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11817\"\u003e#11817\u003c/a\u003e) (176f3eed1)\u003c/li\u003e\n\u003cli\u003eprotobuf: Experimental API marshallerWithRecursionLimit in \u003ccode\u003eProtoUtils\u003c/code\u003e is now stabilized (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11884\"\u003e#11884\u003c/a\u003e) (90b1c4fe9)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Cluster weights should be uint32 (199a7ea3e). They were previously processed as int32, although the sum of weights was checked to be positive. So this would have caused a very large weight to never be selected and to reduce the chances of immediately-following clusters to be selected. There have been no reports of control planes using such large weights\u003c/li\u003e\n\u003cli\u003exds: Fix an unlikely infinite loop triggered by route update (199a7ea3e). Triggering required the old cluster to no longer be used, an RPC processing when the update arrived, and for a RPC to not match any route in the new config. There have been no reports of this actually happening\u003c/li\u003e\n\u003cli\u003ecore: Release data frame if it is received before the headers (dc316f7fd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-stub` from 1.70.0 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-stub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003cli\u003exds: avoid unnecessary dns lookup for CIDR addresses (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11932\"\u003e#11932\u003c/a\u003e) (602aece08)\u003c/li\u003e\n\u003cli\u003enetty: Swap to UniformStreamByteDistributor (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11954\"\u003e#11954\u003c/a\u003e) (2f52a0036). gRPC will no longer observe the HTTP/2 priorities, which were not used directly by gRPC and deprecated in RFC 9113\u003c/li\u003e\n\u003cli\u003ecore: Avoid Set.removeAll() when passing a possibly-large List (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11994\"\u003e#11994\u003c/a\u003e) (666136b4b)\u003c/li\u003e\n\u003cli\u003estub: trailersFromThrowable() metadata should be copied (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11979\"\u003e#11979\u003c/a\u003e) (a6e1c1f09)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003exds: xDS-based HTTP CONNECT configuration (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11861\"\u003e#11861\u003c/a\u003e) (12197065f)\u003c/li\u003e\n\u003cli\u003enetty: Per-rpc authority verification against peer cert subject names. Overriding transport authority at rpc time is only allowed when using TlsChannelCredentials. The per-rpc authority verification feature is guarded by the environment variable GRPC_ENABLE_PER_RPC_AUTHORITY_CHECK in this release. When this is false or not set, the rpc will not fail when the authority verification fails but a warning will be logged. In a subsequent release the usage of this environment variable will be removed and RPCs will start failing if the authority doesn't match the peer certificate names. The environment variable is temporary; if you are depending on the existing insecure behavior, please file an issue (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11724\"\u003e#11724\u003c/a\u003e) (cdab410b8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/panchenko\"\u003e\u003ccode\u003e@​panchenko\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/JoeCqupt\"\u003e\u003ccode\u003e@​JoeCqupt\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eV1.71.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Enable Xds Client Fallback by default.  This allows having a backup xDS server as described in gRFC \u003ca href=\"https://github.com/grpc/proposal/blob/master/A71-xds-fallback.md\"\u003eA71-xds-fallback.md\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11817\"\u003e#11817\u003c/a\u003e) (176f3eed1)\u003c/li\u003e\n\u003cli\u003eprotobuf: Experimental API marshallerWithRecursionLimit in \u003ccode\u003eProtoUtils\u003c/code\u003e is now stabilized (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11884\"\u003e#11884\u003c/a\u003e) (90b1c4fe9)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Cluster weights should be uint32 (199a7ea3e). They were previously processed as int32, although the sum of weights was checked to be positive. So this would have caused a very large weight to never be selected and to reduce the chances of immediately-following clusters to be selected. There have been no reports of control planes using such large weights\u003c/li\u003e\n\u003cli\u003exds: Fix an unlikely infinite loop triggered by route update (199a7ea3e). Triggering required the old cluster to no longer be used, an RPC processing when the update arrived, and for a RPC to not match any route in the new config. There have been no reports of this actually happening\u003c/li\u003e\n\u003cli\u003ecore: Release data frame if it is received before the headers (dc316f7fd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-services` from 1.70.0 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-services's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003cli\u003exds: avoid unnecessary dns lookup for CIDR addresses (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11932\"\u003e#11932\u003c/a\u003e) (602aece08)\u003c/li\u003e\n\u003cli\u003enetty: Swap to UniformStreamByteDistributor (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11954\"\u003e#11954\u003c/a\u003e) (2f52a0036). gRPC will no longer observe the HTTP/2 priorities, which were not used directly by gRPC and deprecated in RFC 9113\u003c/li\u003e\n\u003cli\u003ecore: Avoid Set.removeAll() when passing a possibly-large List (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11994\"\u003e#11994\u003c/a\u003e) (666136b4b)\u003c/li\u003e\n\u003cli\u003estub: trailersFromThrowable() metadata should be copied (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11979\"\u003e#11979\u003c/a\u003e) (a6e1c1f09)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003exds: xDS-based HTTP CONNECT configuration (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11861\"\u003e#11861\u003c/a\u003e) (12197065f)\u003c/li\u003e\n\u003cli\u003enetty: Per-rpc authority verification against peer cert subject names. Overriding transport authority at rpc time is only allowed when using TlsChannelCredentials. The per-rpc authority verification feature is guarded by the environment variable GRPC_ENABLE_PER_RPC_AUTHORITY_CHECK in this release. When this is false or not set, the rpc will not fail when the authority verification fails but a warning will be logged. In a subsequent release the usage of this environment variable will be removed and RPCs will start failing if the authority doesn't match the peer certificate names. The environment variable is temporary; if you are depending on the existing insecure behavior, please file an issue (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11724\"\u003e#11724\u003c/a\u003e) (cdab410b8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/panchenko\"\u003e\u003ccode\u003e@​panchenko\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/JoeCqupt\"\u003e\u003ccode\u003e@​JoeCqupt\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eV1.71.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Enable Xds Client Fallback by default.  This allows having a backup xDS server as described in gRFC \u003ca href=\"https://github.com/grpc/proposal/blob/master/A71-xds-fallback.md\"\u003eA71-xds-fallback.md\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11817\"\u003e#11817\u003c/a\u003e) (176f3eed1)\u003c/li\u003e\n\u003cli\u003eprotobuf: Experimental API marshallerWithRecursionLimit in \u003ccode\u003eProtoUtils\u003c/code\u003e is now stabilized (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11884\"\u003e#11884\u003c/a\u003e) (90b1c4fe9)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Cluster weights should be uint32 (199a7ea3e). They were previously processed as int32, although the sum of weights was checked to be positive. So this would have caused a very large weight to never be selected and to reduce the chances of immediately-following clusters to be selected. There have been no reports of control planes using such large weights\u003c/li\u003e\n\u003cli\u003exds: Fix an unlikely infinite loop triggered by route update (199a7ea3e). Triggering required the old cluster to no longer be used, an RPC processing when the update arrived, and for a RPC to not match any route in the new config. There have been no reports of this actually happening\u003c/li\u003e\n\u003cli\u003ecore: Release data frame if it is received before the headers (dc316f7fd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/hemicharly/grpc-spring-boot-3/pull/55","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemicharly%2Fgrpc-spring-boot-3/issues/55","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/55/packages"}],"issue_packages":[{"old_version":"1.70.0","new_version":"1.75.0","update_type":"minor","path":null,"pr_created_at":"2025-08-25T20:38:07.000Z","version_change":"1.70.0 → 1.75.0","issue":{"uuid":"2772965923","node_id":"PR_kwDOK4L0VM6lSBoj","number":61,"state":"closed","title":"chore(deps): bump io.grpc.version from 1.70.0 to 1.75.0","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":"2025-09-14T17:15:35.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-08-25T20:38:07.000Z","updated_at":"2025-09-14T17:15:35.000Z","time_to_close":1715848,"merged_at":"2025-09-14T17:15:35.000Z","merged_by":"hemicharly","closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"io.grpc.version","old_version":"1.70.0","new_version":"1.75.0","repository_url":null}],"path":null,"ecosystem":"maven"},"body":"Bumps `io.grpc.version` from 1.70.0 to 1.75.0.\nUpdates `io.grpc:grpc-netty-shaded` from 1.70.0 to 1.75.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-netty-shaded's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.75.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ebinder: Introduce server pre-authorization (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12127\"\u003e#12127\u003c/a\u003e). 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 \u0026quot;keep-alive\u0026quot; and \u0026quot;background activity launch\u0026quot; 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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ecore: \u003ccode\u003egrpc-timeout\u003c/code\u003e should always be positive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12201\"\u003e#12201\u003c/a\u003e) (6dfa03c51). 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\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecore: Improved DEADLINE_EXCEEDED message for delayed calls (6ff8ecac0). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: PriorityLB now only uses the failOverTimer to start additional priorities, not fail RPCs (c4256add4). You should no longer see “Connection timeout for priority” errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003enetty: Count sent RST_STREAMs against \u003ccode\u003eNettyServerBuilder.maxRstFramesPerWindow()\u003c/code\u003e limit (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e). This extends the Rapid Reset tool to also cover MadeYouReset. the reset stream count will cause a 420 \u0026quot;Enhance your calm response\u0026quot; to be sent. This depends on Netty 4.1.124 for a bug fix to actually call the encoder by the frame writer.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Convert CdsLb to \u003ccode\u003eXdsDepManager\u003c/code\u003e (297ab05ef). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecensus: APIs for stats and tracing (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12050\"\u003e#12050\u003c/a\u003e) (919370172). Client channel and server builders with interceptors and factories respectively for stats and tracing.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003estub: simplify \u003ccode\u003eBlockingClientCall\u003c/code\u003e infinite blocking (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12217\"\u003e#12217\u003c/a\u003e) (ba0a7329d). Move deadline computation into overloads with finite timeouts. Blocking calls without timeouts now do not have to read the clock.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Do RLS fallback policy eagar start (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12211\"\u003e#12211\u003c/a\u003e) (42e1829b3). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Aggregate cluster fixes (A75) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12186\"\u003e#12186\u003c/a\u003e) (7e982e48a). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: set size correctly for sets and maps in handling \u003ccode\u003eMetadata\u003c/code\u003e values to be exchanged during a call (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12229\"\u003e#12229\u003c/a\u003e) (80217275d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: xdsClient cache transient error for new watchers (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12291\"\u003e#12291\u003c/a\u003e). When a resource update is NACKed, cache the error and update new watchers that get added with that error instead of making them hang.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e). If a LB policy gives extraneous updates with state CONNECTING, then it was possible to re-create \u003ccode\u003efailOverTimer\u003c/code\u003e 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Use a different log name for \u003ccode\u003eXdsClientImpl\u003c/code\u003e and \u003ccode\u003eControlPlaneClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12287\"\u003e#12287\u003c/a\u003e). \u003ccode\u003eControlPlaneClient\u003c/code\u003e uses \u0026quot;xds-cp-client\u0026quot; now instead of \u0026quot;xds-client\u0026quot; while logging.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to Netty 4.1.124.Final (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e). This implicitly disables \u003ccode\u003eNettyAdaptiveCumulator\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11284\"\u003e#11284\u003c/a\u003e), 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebazel: Use \u003ccode\u003ejar_jar\u003c/code\u003e to avoid xds deps (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12243\"\u003e#12243\u003c/a\u003e) (8f09b9689). The //xds and //xds:orca targets now use \u003ccode\u003ejar_jar\u003c/code\u003e 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\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClarify requirements for creating a cross-user Channel. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12181\"\u003e#12181\u003c/a\u003e). The \u003ccode\u003e@SystemApi\u003c/code\u003e 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 \u003ccode\u003eBinderChannelBuilder#bindAsUser\u003c/code\u003e has always required SDK_INT \u0026gt;= 30. This change just copies that requirement forward to its replacement APIs in \u003ccode\u003eAndroidComponentAddress\u003c/code\u003e and the TARGET_ANDROID_USER \u003ccode\u003eNameResolver.Args\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: Add more Javadoc for \u003ccode\u003eNameResolver.Listener2\u003c/code\u003e interface (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12220\"\u003e#12220\u003c/a\u003e) (d352540a0)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/benjaminp\"\u003e\u003ccode\u003e@​benjaminp\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/werkt\"\u003e\u003ccode\u003e@​werkt\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/kilink\"\u003e\u003ccode\u003e@​kilink\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/vimanikag\"\u003e\u003ccode\u003e@​vimanikag\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3abc0e6e1f4981017b7117e47e1844a318a51f24\"\u003e\u003ccode\u003e3abc0e6\u003c/code\u003e\u003c/a\u003e Bump version to 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/cbfe6c1ccaf0d9480daa8faa3e37a117adb798ba\"\u003e\u003ccode\u003ecbfe6c1\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a0f3520ad0bf5186f84d48b7df6e2555e8b16da8\"\u003e\u003ccode\u003ea0f3520\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12295\"\u003e#12295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7ef13f40a6d9cdaccd0c064b5bd3745f9518781e\"\u003e\u003ccode\u003e7ef13f4\u003c/code\u003e\u003c/a\u003e Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/14fd8eff28d55fae4a791b256602d83a5fb9d848\"\u003e\u003ccode\u003e14fd8ef\u003c/code\u003e\u003c/a\u003e xds: xdsClient caches transient error for new watchers (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/653d076c605a9066cf6ae484921058580df2437d\"\u003e\u003ccode\u003e653d076\u003c/code\u003e\u003c/a\u003e xds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5c2b1aa51608b1fff016a313d8ee65f92e8d23d\"\u003e\u003ccode\u003ea5c2b1a\u003c/code\u003e\u003c/a\u003e netty: Count sent RST_STREAMs against limit (1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/0d3e8283a8105a7bbf1bf746d96cac1e363de2e3\"\u003e\u003ccode\u003e0d3e828\u003c/code\u003e\u003c/a\u003e xds: Use a different log name for XdsClientImpl and ControlPlaneClient (1.75....\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/d750e9df576a63f8b0d55eefc730282dc60f99d1\"\u003e\u003ccode\u003ed750e9d\u003c/code\u003e\u003c/a\u003e Upgrade to Netty 4.1.124.Final (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/19c579e8a93cc0660df1523b5740eae9aa888a09\"\u003e\u003ccode\u003e19c579e\u003c/code\u003e\u003c/a\u003e Bump versions of dependencies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12252\"\u003e#12252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.75.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-protobuf` from 1.70.0 to 1.75.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-protobuf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.75.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ebinder: Introduce server pre-authorization (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12127\"\u003e#12127\u003c/a\u003e). 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 \u0026quot;keep-alive\u0026quot; and \u0026quot;background activity launch\u0026quot; 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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ecore: \u003ccode\u003egrpc-timeout\u003c/code\u003e should always be positive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12201\"\u003e#12201\u003c/a\u003e) (6dfa03c51). 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\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecore: Improved DEADLINE_EXCEEDED message for delayed calls (6ff8ecac0). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: PriorityLB now only uses the failOverTimer to start additional priorities, not fail RPCs (c4256add4). You should no longer see “Connection timeout for priority” errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003enetty: Count sent RST_STREAMs against \u003ccode\u003eNettyServerBuilder.maxRstFramesPerWindow()\u003c/code\u003e limit (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e). This extends the Rapid Reset tool to also cover MadeYouReset. the reset stream count will cause a 420 \u0026quot;Enhance your calm response\u0026quot; to be sent. This depends on Netty 4.1.124 for a bug fix to actually call the encoder by the frame writer.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Convert CdsLb to \u003ccode\u003eXdsDepManager\u003c/code\u003e (297ab05ef). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecensus: APIs for stats and tracing (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12050\"\u003e#12050\u003c/a\u003e) (919370172). Client channel and server builders with interceptors and factories respectively for stats and tracing.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003estub: simplify \u003ccode\u003eBlockingClientCall\u003c/code\u003e infinite blocking (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12217\"\u003e#12217\u003c/a\u003e) (ba0a7329d). Move deadline computation into overloads with finite timeouts. Blocking calls without timeouts now do not have to read the clock.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Do RLS fallback policy eagar start (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12211\"\u003e#12211\u003c/a\u003e) (42e1829b3). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Aggregate cluster fixes (A75) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12186\"\u003e#12186\u003c/a\u003e) (7e982e48a). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: set size correctly for sets and maps in handling \u003ccode\u003eMetadata\u003c/code\u003e values to be exchanged during a call (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12229\"\u003e#12229\u003c/a\u003e) (80217275d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: xdsClient cache transient error for new watchers (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12291\"\u003e#12291\u003c/a\u003e). When a resource update is NACKed, cache the error and update new watchers that get added with that error instead of making them hang.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e). If a LB policy gives extraneous updates with state CONNECTING, then it was possible to re-create \u003ccode\u003efailOverTimer\u003c/code\u003e 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Use a different log name for \u003ccode\u003eXdsClientImpl\u003c/code\u003e and \u003ccode\u003eControlPlaneClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12287\"\u003e#12287\u003c/a\u003e). \u003ccode\u003eControlPlaneClient\u003c/code\u003e uses \u0026quot;xds-cp-client\u0026quot; now instead of \u0026quot;xds-client\u0026quot; while logging.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to Netty 4.1.124.Final (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e). This implicitly disables \u003ccode\u003eNettyAdaptiveCumulator\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11284\"\u003e#11284\u003c/a\u003e), 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebazel: Use \u003ccode\u003ejar_jar\u003c/code\u003e to avoid xds deps (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12243\"\u003e#12243\u003c/a\u003e) (8f09b9689). The //xds and //xds:orca targets now use \u003ccode\u003ejar_jar\u003c/code\u003e 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\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClarify requirements for creating a cross-user Channel. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12181\"\u003e#12181\u003c/a\u003e). The \u003ccode\u003e@SystemApi\u003c/code\u003e 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 \u003ccode\u003eBinderChannelBuilder#bindAsUser\u003c/code\u003e has always required SDK_INT \u0026gt;= 30. This change just copies that requirement forward to its replacement APIs in \u003ccode\u003eAndroidComponentAddress\u003c/code\u003e and the TARGET_ANDROID_USER \u003ccode\u003eNameResolver.Args\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: Add more Javadoc for \u003ccode\u003eNameResolver.Listener2\u003c/code\u003e interface (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12220\"\u003e#12220\u003c/a\u003e) (d352540a0)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/benjaminp\"\u003e\u003ccode\u003e@​benjaminp\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/werkt\"\u003e\u003ccode\u003e@​werkt\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/kilink\"\u003e\u003ccode\u003e@​kilink\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/vimanikag\"\u003e\u003ccode\u003e@​vimanikag\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3abc0e6e1f4981017b7117e47e1844a318a51f24\"\u003e\u003ccode\u003e3abc0e6\u003c/code\u003e\u003c/a\u003e Bump version to 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/cbfe6c1ccaf0d9480daa8faa3e37a117adb798ba\"\u003e\u003ccode\u003ecbfe6c1\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a0f3520ad0bf5186f84d48b7df6e2555e8b16da8\"\u003e\u003ccode\u003ea0f3520\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12295\"\u003e#12295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7ef13f40a6d9cdaccd0c064b5bd3745f9518781e\"\u003e\u003ccode\u003e7ef13f4\u003c/code\u003e\u003c/a\u003e Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/14fd8eff28d55fae4a791b256602d83a5fb9d848\"\u003e\u003ccode\u003e14fd8ef\u003c/code\u003e\u003c/a\u003e xds: xdsClient caches transient error for new watchers (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/653d076c605a9066cf6ae484921058580df2437d\"\u003e\u003ccode\u003e653d076\u003c/code\u003e\u003c/a\u003e xds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5c2b1aa51608b1fff016a313d8ee65f92e8d23d\"\u003e\u003ccode\u003ea5c2b1a\u003c/code\u003e\u003c/a\u003e netty: Count sent RST_STREAMs against limit (1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/0d3e8283a8105a7bbf1bf746d96cac1e363de2e3\"\u003e\u003ccode\u003e0d3e828\u003c/code\u003e\u003c/a\u003e xds: Use a different log name for XdsClientImpl and ControlPlaneClient (1.75....\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/d750e9df576a63f8b0d55eefc730282dc60f99d1\"\u003e\u003ccode\u003ed750e9d\u003c/code\u003e\u003c/a\u003e Upgrade to Netty 4.1.124.Final (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/19c579e8a93cc0660df1523b5740eae9aa888a09\"\u003e\u003ccode\u003e19c579e\u003c/code\u003e\u003c/a\u003e Bump versions of dependencies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12252\"\u003e#12252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.75.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-stub` from 1.70.0 to 1.75.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-stub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.75.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ebinder: Introduce server pre-authorization (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12127\"\u003e#12127\u003c/a\u003e). 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 \u0026quot;keep-alive\u0026quot; and \u0026quot;background activity launch\u0026quot; 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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ecore: \u003ccode\u003egrpc-timeout\u003c/code\u003e should always be positive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12201\"\u003e#12201\u003c/a\u003e) (6dfa03c51). 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\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecore: Improved DEADLINE_EXCEEDED message for delayed calls (6ff8ecac0). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: PriorityLB now only uses the failOverTimer to start additional priorities, not fail RPCs (c4256add4). You should no longer see “Connection timeout for priority” errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003enetty: Count sent RST_STREAMs against \u003ccode\u003eNettyServerBuilder.maxRstFramesPerWindow()\u003c/code\u003e limit (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e). This extends the Rapid Reset tool to also cover MadeYouReset. the reset stream count will cause a 420 \u0026quot;Enhance your calm response\u0026quot; to be sent. This depends on Netty 4.1.124 for a bug fix to actually call the encoder by the frame writer.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Convert CdsLb to \u003ccode\u003eXdsDepManager\u003c/code\u003e (297ab05ef). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecensus: APIs for stats and tracing (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12050\"\u003e#12050\u003c/a\u003e) (919370172). Client channel and server builders with interceptors and factories respectively for stats and tracing.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003estub: simplify \u003ccode\u003eBlockingClientCall\u003c/code\u003e infinite blocking (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12217\"\u003e#12217\u003c/a\u003e) (ba0a7329d). Move deadline computation into overloads with finite timeouts. Blocking calls without timeouts now do not have to read the clock.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Do RLS fallback policy eagar start (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12211\"\u003e#12211\u003c/a\u003e) (42e1829b3). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Aggregate cluster fixes (A75) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12186\"\u003e#12186\u003c/a\u003e) (7e982e48a). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: set size correctly for sets and maps in handling \u003ccode\u003eMetadata\u003c/code\u003e values to be exchanged during a call (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12229\"\u003e#12229\u003c/a\u003e) (80217275d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: xdsClient cache transient error for new watchers (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12291\"\u003e#12291\u003c/a\u003e). When a resource update is NACKed, cache the error and update new watchers that get added with that error instead of making them hang.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e). If a LB policy gives extraneous updates with state CONNECTING, then it was possible to re-create \u003ccode\u003efailOverTimer\u003c/code\u003e 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Use a different log name for \u003ccode\u003eXdsClientImpl\u003c/code\u003e and \u003ccode\u003eControlPlaneClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12287\"\u003e#12287\u003c/a\u003e). \u003ccode\u003eControlPlaneClient\u003c/code\u003e uses \u0026quot;xds-cp-client\u0026quot; now instead of \u0026quot;xds-client\u0026quot; while logging.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to Netty 4.1.124.Final (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e). This implicitly disables \u003ccode\u003eNettyAdaptiveCumulator\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11284\"\u003e#11284\u003c/a\u003e), 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebazel: Use \u003ccode\u003ejar_jar\u003c/code\u003e to avoid xds deps (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12243\"\u003e#12243\u003c/a\u003e) (8f09b9689). The //xds and //xds:orca targets now use \u003ccode\u003ejar_jar\u003c/code\u003e 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\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClarify requirements for creating a cross-user Channel. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12181\"\u003e#12181\u003c/a\u003e). The \u003ccode\u003e@SystemApi\u003c/code\u003e 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 \u003ccode\u003eBinderChannelBuilder#bindAsUser\u003c/code\u003e has always required SDK_INT \u0026gt;= 30. This change just copies that requirement forward to its replacement APIs in \u003ccode\u003eAndroidComponentAddress\u003c/code\u003e and the TARGET_ANDROID_USER \u003ccode\u003eNameResolver.Args\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: Add more Javadoc for \u003ccode\u003eNameResolver.Listener2\u003c/code\u003e interface (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12220\"\u003e#12220\u003c/a\u003e) (d352540a0)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/benjaminp\"\u003e\u003ccode\u003e@​benjaminp\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/werkt\"\u003e\u003ccode\u003e@​werkt\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/kilink\"\u003e\u003ccode\u003e@​kilink\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/vimanikag\"\u003e\u003ccode\u003e@​vimanikag\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3abc0e6e1f4981017b7117e47e1844a318a51f24\"\u003e\u003ccode\u003e3abc0e6\u003c/code\u003e\u003c/a\u003e Bump version to 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/cbfe6c1ccaf0d9480daa8faa3e37a117adb798ba\"\u003e\u003ccode\u003ecbfe6c1\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a0f3520ad0bf5186f84d48b7df6e2555e8b16da8\"\u003e\u003ccode\u003ea0f3520\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12295\"\u003e#12295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7ef13f40a6d9cdaccd0c064b5bd3745f9518781e\"\u003e\u003ccode\u003e7ef13f4\u003c/code\u003e\u003c/a\u003e Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/14fd8eff28d55fae4a791b256602d83a5fb9d848\"\u003e\u003ccode\u003e14fd8ef\u003c/code\u003e\u003c/a\u003e xds: xdsClient caches transient error for new watchers (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/653d076c605a9066cf6ae484921058580df2437d\"\u003e\u003ccode\u003e653d076\u003c/code\u003e\u003c/a\u003e xds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5c2b1aa51608b1fff016a313d8ee65f92e8d23d\"\u003e\u003ccode\u003ea5c2b1a\u003c/code\u003e\u003c/a\u003e netty: Count sent RST_STREAMs against limit (1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/0d3e8283a8105a7bbf1bf746d96cac1e363de2e3\"\u003e\u003ccode\u003e0d3e828\u003c/code\u003e\u003c/a\u003e xds: Use a different log name for XdsClientImpl and ControlPlaneClient (1.75....\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/d750e9df576a63f8b0d55eefc730282dc60f99d1\"\u003e\u003ccode\u003ed750e9d\u003c/code\u003e\u003c/a\u003e Upgrade to Netty 4.1.124.Final (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/19c579e8a93cc0660df1523b5740eae9aa888a09\"\u003e\u003ccode\u003e19c579e\u003c/code\u003e\u003c/a\u003e Bump versions of dependencies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12252\"\u003e#12252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.75.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-services` from 1.70.0 to 1.75.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-services's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.75.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ebinder: Introduce server pre-authorization (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12127\"\u003e#12127\u003c/a\u003e). 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 \u0026quot;keep-alive\u0026quot; and \u0026quot;background activity launch\u0026quot; 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.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ecore: \u003ccode\u003egrpc-timeout\u003c/code\u003e should always be positive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12201\"\u003e#12201\u003c/a\u003e) (6dfa03c51). 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\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecore: Improved DEADLINE_EXCEEDED message for delayed calls (6ff8ecac0). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: PriorityLB now only uses the failOverTimer to start additional priorities, not fail RPCs (c4256add4). You should no longer see “Connection timeout for priority” errors.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003enetty: Count sent RST_STREAMs against \u003ccode\u003eNettyServerBuilder.maxRstFramesPerWindow()\u003c/code\u003e limit (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e). This extends the Rapid Reset tool to also cover MadeYouReset. the reset stream count will cause a 420 \u0026quot;Enhance your calm response\u0026quot; to be sent. This depends on Netty 4.1.124 for a bug fix to actually call the encoder by the frame writer.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Convert CdsLb to \u003ccode\u003eXdsDepManager\u003c/code\u003e (297ab05ef). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ecensus: APIs for stats and tracing (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12050\"\u003e#12050\u003c/a\u003e) (919370172). Client channel and server builders with interceptors and factories respectively for stats and tracing.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003estub: simplify \u003ccode\u003eBlockingClientCall\u003c/code\u003e infinite blocking (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12217\"\u003e#12217\u003c/a\u003e) (ba0a7329d). Move deadline computation into overloads with finite timeouts. Blocking calls without timeouts now do not have to read the clock.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Do RLS fallback policy eagar start (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12211\"\u003e#12211\u003c/a\u003e) (42e1829b3). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Aggregate cluster fixes (A75) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12186\"\u003e#12186\u003c/a\u003e) (7e982e48a). 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: set size correctly for sets and maps in handling \u003ccode\u003eMetadata\u003c/code\u003e values to be exchanged during a call (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12229\"\u003e#12229\u003c/a\u003e) (80217275d)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: xdsClient cache transient error for new watchers (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12291\"\u003e#12291\u003c/a\u003e). When a resource update is NACKed, cache the error and update new watchers that get added with that error instead of making them hang.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e). If a LB policy gives extraneous updates with state CONNECTING, then it was possible to re-create \u003ccode\u003efailOverTimer\u003c/code\u003e 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003exds: Use a different log name for \u003ccode\u003eXdsClientImpl\u003c/code\u003e and \u003ccode\u003eControlPlaneClient\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12287\"\u003e#12287\u003c/a\u003e). \u003ccode\u003eControlPlaneClient\u003c/code\u003e uses \u0026quot;xds-cp-client\u0026quot; now instead of \u0026quot;xds-client\u0026quot; while logging.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to Netty 4.1.124.Final (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e). This implicitly disables \u003ccode\u003eNettyAdaptiveCumulator\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11284\"\u003e#11284\u003c/a\u003e), 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.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebazel: Use \u003ccode\u003ejar_jar\u003c/code\u003e to avoid xds deps (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12243\"\u003e#12243\u003c/a\u003e) (8f09b9689). The //xds and //xds:orca targets now use \u003ccode\u003ejar_jar\u003c/code\u003e 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\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eClarify requirements for creating a cross-user Channel. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12181\"\u003e#12181\u003c/a\u003e). The \u003ccode\u003e@SystemApi\u003c/code\u003e 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 \u003ccode\u003eBinderChannelBuilder#bindAsUser\u003c/code\u003e has always required SDK_INT \u0026gt;= 30. This change just copies that requirement forward to its replacement APIs in \u003ccode\u003eAndroidComponentAddress\u003c/code\u003e and the TARGET_ANDROID_USER \u003ccode\u003eNameResolver.Args\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eapi: Add more Javadoc for \u003ccode\u003eNameResolver.Listener2\u003c/code\u003e interface (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12220\"\u003e#12220\u003c/a\u003e) (d352540a0)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/benjaminp\"\u003e\u003ccode\u003e@​benjaminp\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/werkt\"\u003e\u003ccode\u003e@​werkt\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/kilink\"\u003e\u003ccode\u003e@​kilink\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/vimanikag\"\u003e\u003ccode\u003e@​vimanikag\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3abc0e6e1f4981017b7117e47e1844a318a51f24\"\u003e\u003ccode\u003e3abc0e6\u003c/code\u003e\u003c/a\u003e Bump version to 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/cbfe6c1ccaf0d9480daa8faa3e37a117adb798ba\"\u003e\u003ccode\u003ecbfe6c1\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.75.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a0f3520ad0bf5186f84d48b7df6e2555e8b16da8\"\u003e\u003ccode\u003ea0f3520\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12295\"\u003e#12295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7ef13f40a6d9cdaccd0c064b5bd3745f9518781e\"\u003e\u003ccode\u003e7ef13f4\u003c/code\u003e\u003c/a\u003e Release v1.75.0 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12294\"\u003e#12294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/14fd8eff28d55fae4a791b256602d83a5fb9d848\"\u003e\u003ccode\u003e14fd8ef\u003c/code\u003e\u003c/a\u003e xds: xdsClient caches transient error for new watchers (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/653d076c605a9066cf6ae484921058580df2437d\"\u003e\u003ccode\u003e653d076\u003c/code\u003e\u003c/a\u003e xds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12289\"\u003e#12289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5c2b1aa51608b1fff016a313d8ee65f92e8d23d\"\u003e\u003ccode\u003ea5c2b1a\u003c/code\u003e\u003c/a\u003e netty: Count sent RST_STREAMs against limit (1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12288\"\u003e#12288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/0d3e8283a8105a7bbf1bf746d96cac1e363de2e3\"\u003e\u003ccode\u003e0d3e828\u003c/code\u003e\u003c/a\u003e xds: Use a different log name for XdsClientImpl and ControlPlaneClient (1.75....\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/d750e9df576a63f8b0d55eefc730282dc60f99d1\"\u003e\u003ccode\u003ed750e9d\u003c/code\u003e\u003c/a\u003e Upgrade to Netty 4.1.124.Final (v1.75.x backport) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12286\"\u003e#12286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/19c579e8a93cc0660df1523b5740eae9aa888a09\"\u003e\u003ccode\u003e19c579e\u003c/code\u003e\u003c/a\u003e Bump versions of dependencies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12252\"\u003e#12252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.75.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/hemicharly/grpc-spring-boot-3/pull/61","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemicharly%2Fgrpc-spring-boot-3/issues/61","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/61/packages"}},{"old_version":"1.70.0","new_version":"1.74.0","update_type":"minor","path":null,"pr_created_at":"2025-08-04T13:22:35.000Z","version_change":"1.70.0 → 1.74.0","issue":{"uuid":"3289433872","node_id":"PR_kwDOK4L0VM6iAPsU","number":59,"state":"closed","title":"chore(deps): bump io.grpc.version from 1.70.0 to 1.74.0","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-08-25T20:38:10.000Z","author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-08-04T13:22:35.000Z","updated_at":"2025-08-25T20:38:10.000Z","time_to_close":1840535,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"io.grpc.version","old_version":"1.70.0","new_version":"1.74.0","repository_url":null}],"path":null,"ecosystem":"maven"},"body":"Bumps `io.grpc.version` from 1.70.0 to 1.74.0.\nUpdates `io.grpc:grpc-netty-shaded` from 1.70.0 to 1.74.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-netty-shaded's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Default to \u003ccode\u003e@generated=omit\u003c/code\u003e (f8700a13a). This omits \u003ccode\u003ejavax.annotation.Generated\u003c/code\u003e from the generated code and makes the \u003ccode\u003eorg.apache.tomcat:annotations-api\u003c/code\u003e compile-only dependency unnecessary (README and examples changes forthcoming; we delayed those changes until the release landed). You can use the option \u003ccode\u003e@generated=javax\u003c/code\u003e for the previous behavior, but please also file an issue so we can develop alternatives\u003c/li\u003e\n\u003cli\u003ecompiler: generate blocking v2 unary calls that throw StatusException (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12126\"\u003e#12126\u003c/a\u003e) (a16d65591). Previously, the new blocking stub API was identical to the older blocking stub for unary RPCs and used the unchecked \u003ccode\u003eStatusRuntimeException\u003c/code\u003e. However, feedback demonstrated it was confusing to mix that with the checked \u003ccode\u003eStatusException\u003c/code\u003e in \u003ccode\u003eBlockingClientCall\u003c/code\u003e. Now the new blocking stub uses StatusException throughout. grpc-java continues to support the old generated code, but the version of protoc-gen-grpc-java will dictate which API you see. If you support multiple generated code versions, you can use the older blocking v1 stub for unary RPCs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Fix a race that caused RPCs to hang on start when a GOAWAY was received while the RPCs’ headers were being written to the OS (b04c673fd, 15c757398). This was a very old race, not a recent regression. All streams should now properly fail instead of hanging, although in some cases they may be transparently retried\u003c/li\u003e\n\u003cli\u003eutil: OutlierDetection should use nanoTime, not currentTimeMillis (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12110\"\u003e#12110\u003c/a\u003e) (1c4309899). Previously, changes in the wall time would impact its accounting\u003c/li\u003e\n\u003cli\u003exds: Don't allow hostnames in address field in EDS (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12123\"\u003e#12123\u003c/a\u003e) (482dc5c1c). Only IP addresses were handled properly, and only IP addresses should be handled per gRFC A27\u003c/li\u003e\n\u003cli\u003exds: In resource handling, call onError() for RDS and EDS NACKs (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12122\"\u003e#12122\u003c/a\u003e) (efe9ccc22). Previously the resource was NACKed, but gRPC would continue waiting for the resource until a timeout was reached and claim the control plane didn’t send the resource. Now it will fail quickly with an informative error\u003c/li\u003e\n\u003cli\u003exds: Implement equals in RingHashConfig (a5eaa66cc). Previously all configuration refreshes were considered a new config, which had the potential for causing unexpected inefficiency problems. This was noticed by new code for gRFC A74 xDS Config Tears that is not yet enabled, so there are no known problems that this caused\u003c/li\u003e\n\u003cli\u003eLBs should avoid calling LBs after lb.shutdown() (1df2a3305). This fixed pick_first and ring_hash behavior that could cause rare and “random” races in parent load balancers like a \u003ccode\u003eNullPointerException\u003c/code\u003e in \u003ccode\u003eClusterImplLoadBalancer.createSubchannel()\u003c/code\u003e, which had a ring_hash child. This is most likely to help xDS, as it heavily uses hierarchical LB policies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Deliver addresses in a random order to shuffle connection creation ordering (f07eb47ca). Previously, connections were created in-order (but non-blocking), so in a fast network the first address could be more likely to connect first given a \u0026quot;microsecond\u0026quot; headstart. That first connection then receives all the buffered RPCs, which could cause temporary, but repeated, load imbalances of the same backend when all clients receive the same list of addresses in the same order. This has been seen in practice, but it is unclear how often it happens. Shuffling has the potential to improve load distribution of new clients when using round_robin, weighted_round_robin, and least_request, which connect simultaneously to multiple addresses\u003c/li\u003e\n\u003cli\u003ecore: Use lazy message formatting in checkState (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12144\"\u003e#12144\u003c/a\u003e) (26bd0eee4). This avoids the potential of unnecessarily formatting an exception as a string when a subchannel fails to connect\u003c/li\u003e\n\u003cli\u003ebazel: Migrate java_grpc_library to use DefaultInfo (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12148\"\u003e#12148\u003c/a\u003e) (6f69363d9). This adds compatibility for \u003ccode\u003e--incompatible_disable_target_default_provider_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebinder: Rationalize \u003ca href=\"https://github.com/ThreadSafe-ty\"\u003e\u003ccode\u003e@​ThreadSafe-ty\u003c/code\u003e\u003c/a\u003e inside BinderTransport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12130\"\u003e#12130\u003c/a\u003e) (c20642874)\u003c/li\u003e\n\u003cli\u003ebinder: Cancel checkAuthorization() request if still pending upon termination (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12167\"\u003e#12167\u003c/a\u003e) (30d40a617)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Upgrade Protobuf C++ to 22.5 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11961\"\u003e#11961\u003c/a\u003e) (46485c8b6). This is used by the pre-built protoc-gen-grpc-java plugin on Maven Central. This should have no visible benefit, but gets us closer to upgrading to Protobuf 27 which added edition 2023 support\u003c/li\u003e\n\u003cli\u003erelease: Migrate artifacts publishing changed from legacy OSSRH to Central Portal (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12156\"\u003e#12156\u003c/a\u003e) (f99b2aaef). We aren’t aware of any visible changes to the results on Maven Central\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/9d2c895c29ad505ea564ccf9369678e5478152e5\"\u003e\u003ccode\u003e9d2c895\u003c/code\u003e\u003c/a\u003e Bump version to 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b58900e759483272f6aa12bb8038cf178e62d803\"\u003e\u003ccode\u003eb58900e\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/15c7573988fab5c9893c1d86f0d23f1cd4b683f8\"\u003e\u003ccode\u003e15c7573\u003c/code\u003e\u003c/a\u003e netty: Associate netty stream eagerly to avoid client hang\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b04c673fdfec6191afdca06fa254b9e4da0150f6\"\u003e\u003ccode\u003eb04c673\u003c/code\u003e\u003c/a\u003e Guarantee missing stream promise delivery\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/1df2a330568b2131fd2fda77cf85c948dba19ae0\"\u003e\u003ccode\u003e1df2a33\u003c/code\u003e\u003c/a\u003e LBs should avoid calling LBs after lb.shutdown()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5eaa66ccc2add0c9b78096ca3196ec1c7904c1f\"\u003e\u003ccode\u003ea5eaa66\u003c/code\u003e\u003c/a\u003e xds: Implement equals in RingHashConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/393f02b117a2c2e204029274a9266b5c64124062\"\u003e\u003ccode\u003e393f02b\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Convert CdsLb to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/69b8cf5f2611c580fa1e5ee3a4ad9e42919e49c6\"\u003e\u003ccode\u003e69b8cf5\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Support tracking non-xds resources in XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/98e4252e3408e804162a86e38466a90c5d10a817\"\u003e\u003ccode\u003e98e4252\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: XdsNR should be subscribing to clusters with XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3b63af411d32bb274a69bb14b1e5aac8ffca2f45\"\u003e\u003ccode\u003e3b63af4\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Add logical dns cluster support to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.74.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-protobuf` from 1.70.0 to 1.74.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-protobuf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Default to \u003ccode\u003e@generated=omit\u003c/code\u003e (f8700a13a). This omits \u003ccode\u003ejavax.annotation.Generated\u003c/code\u003e from the generated code and makes the \u003ccode\u003eorg.apache.tomcat:annotations-api\u003c/code\u003e compile-only dependency unnecessary (README and examples changes forthcoming; we delayed those changes until the release landed). You can use the option \u003ccode\u003e@generated=javax\u003c/code\u003e for the previous behavior, but please also file an issue so we can develop alternatives\u003c/li\u003e\n\u003cli\u003ecompiler: generate blocking v2 unary calls that throw StatusException (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12126\"\u003e#12126\u003c/a\u003e) (a16d65591). Previously, the new blocking stub API was identical to the older blocking stub for unary RPCs and used the unchecked \u003ccode\u003eStatusRuntimeException\u003c/code\u003e. However, feedback demonstrated it was confusing to mix that with the checked \u003ccode\u003eStatusException\u003c/code\u003e in \u003ccode\u003eBlockingClientCall\u003c/code\u003e. Now the new blocking stub uses StatusException throughout. grpc-java continues to support the old generated code, but the version of protoc-gen-grpc-java will dictate which API you see. If you support multiple generated code versions, you can use the older blocking v1 stub for unary RPCs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Fix a race that caused RPCs to hang on start when a GOAWAY was received while the RPCs’ headers were being written to the OS (b04c673fd, 15c757398). This was a very old race, not a recent regression. All streams should now properly fail instead of hanging, although in some cases they may be transparently retried\u003c/li\u003e\n\u003cli\u003eutil: OutlierDetection should use nanoTime, not currentTimeMillis (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12110\"\u003e#12110\u003c/a\u003e) (1c4309899). Previously, changes in the wall time would impact its accounting\u003c/li\u003e\n\u003cli\u003exds: Don't allow hostnames in address field in EDS (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12123\"\u003e#12123\u003c/a\u003e) (482dc5c1c). Only IP addresses were handled properly, and only IP addresses should be handled per gRFC A27\u003c/li\u003e\n\u003cli\u003exds: In resource handling, call onError() for RDS and EDS NACKs (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12122\"\u003e#12122\u003c/a\u003e) (efe9ccc22). Previously the resource was NACKed, but gRPC would continue waiting for the resource until a timeout was reached and claim the control plane didn’t send the resource. Now it will fail quickly with an informative error\u003c/li\u003e\n\u003cli\u003exds: Implement equals in RingHashConfig (a5eaa66cc). Previously all configuration refreshes were considered a new config, which had the potential for causing unexpected inefficiency problems. This was noticed by new code for gRFC A74 xDS Config Tears that is not yet enabled, so there are no known problems that this caused\u003c/li\u003e\n\u003cli\u003eLBs should avoid calling LBs after lb.shutdown() (1df2a3305). This fixed pick_first and ring_hash behavior that could cause rare and “random” races in parent load balancers like a \u003ccode\u003eNullPointerException\u003c/code\u003e in \u003ccode\u003eClusterImplLoadBalancer.createSubchannel()\u003c/code\u003e, which had a ring_hash child. This is most likely to help xDS, as it heavily uses hierarchical LB policies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Deliver addresses in a random order to shuffle connection creation ordering (f07eb47ca). Previously, connections were created in-order (but non-blocking), so in a fast network the first address could be more likely to connect first given a \u0026quot;microsecond\u0026quot; headstart. That first connection then receives all the buffered RPCs, which could cause temporary, but repeated, load imbalances of the same backend when all clients receive the same list of addresses in the same order. This has been seen in practice, but it is unclear how often it happens. Shuffling has the potential to improve load distribution of new clients when using round_robin, weighted_round_robin, and least_request, which connect simultaneously to multiple addresses\u003c/li\u003e\n\u003cli\u003ecore: Use lazy message formatting in checkState (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12144\"\u003e#12144\u003c/a\u003e) (26bd0eee4). This avoids the potential of unnecessarily formatting an exception as a string when a subchannel fails to connect\u003c/li\u003e\n\u003cli\u003ebazel: Migrate java_grpc_library to use DefaultInfo (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12148\"\u003e#12148\u003c/a\u003e) (6f69363d9). This adds compatibility for \u003ccode\u003e--incompatible_disable_target_default_provider_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebinder: Rationalize \u003ca href=\"https://github.com/ThreadSafe-ty\"\u003e\u003ccode\u003e@​ThreadSafe-ty\u003c/code\u003e\u003c/a\u003e inside BinderTransport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12130\"\u003e#12130\u003c/a\u003e) (c20642874)\u003c/li\u003e\n\u003cli\u003ebinder: Cancel checkAuthorization() request if still pending upon termination (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12167\"\u003e#12167\u003c/a\u003e) (30d40a617)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Upgrade Protobuf C++ to 22.5 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11961\"\u003e#11961\u003c/a\u003e) (46485c8b6). This is used by the pre-built protoc-gen-grpc-java plugin on Maven Central. This should have no visible benefit, but gets us closer to upgrading to Protobuf 27 which added edition 2023 support\u003c/li\u003e\n\u003cli\u003erelease: Migrate artifacts publishing changed from legacy OSSRH to Central Portal (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12156\"\u003e#12156\u003c/a\u003e) (f99b2aaef). We aren’t aware of any visible changes to the results on Maven Central\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/9d2c895c29ad505ea564ccf9369678e5478152e5\"\u003e\u003ccode\u003e9d2c895\u003c/code\u003e\u003c/a\u003e Bump version to 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b58900e759483272f6aa12bb8038cf178e62d803\"\u003e\u003ccode\u003eb58900e\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/15c7573988fab5c9893c1d86f0d23f1cd4b683f8\"\u003e\u003ccode\u003e15c7573\u003c/code\u003e\u003c/a\u003e netty: Associate netty stream eagerly to avoid client hang\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b04c673fdfec6191afdca06fa254b9e4da0150f6\"\u003e\u003ccode\u003eb04c673\u003c/code\u003e\u003c/a\u003e Guarantee missing stream promise delivery\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/1df2a330568b2131fd2fda77cf85c948dba19ae0\"\u003e\u003ccode\u003e1df2a33\u003c/code\u003e\u003c/a\u003e LBs should avoid calling LBs after lb.shutdown()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5eaa66ccc2add0c9b78096ca3196ec1c7904c1f\"\u003e\u003ccode\u003ea5eaa66\u003c/code\u003e\u003c/a\u003e xds: Implement equals in RingHashConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/393f02b117a2c2e204029274a9266b5c64124062\"\u003e\u003ccode\u003e393f02b\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Convert CdsLb to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/69b8cf5f2611c580fa1e5ee3a4ad9e42919e49c6\"\u003e\u003ccode\u003e69b8cf5\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Support tracking non-xds resources in XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/98e4252e3408e804162a86e38466a90c5d10a817\"\u003e\u003ccode\u003e98e4252\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: XdsNR should be subscribing to clusters with XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3b63af411d32bb274a69bb14b1e5aac8ffca2f45\"\u003e\u003ccode\u003e3b63af4\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Add logical dns cluster support to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.74.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-stub` from 1.70.0 to 1.74.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-stub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Default to \u003ccode\u003e@generated=omit\u003c/code\u003e (f8700a13a). This omits \u003ccode\u003ejavax.annotation.Generated\u003c/code\u003e from the generated code and makes the \u003ccode\u003eorg.apache.tomcat:annotations-api\u003c/code\u003e compile-only dependency unnecessary (README and examples changes forthcoming; we delayed those changes until the release landed). You can use the option \u003ccode\u003e@generated=javax\u003c/code\u003e for the previous behavior, but please also file an issue so we can develop alternatives\u003c/li\u003e\n\u003cli\u003ecompiler: generate blocking v2 unary calls that throw StatusException (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12126\"\u003e#12126\u003c/a\u003e) (a16d65591). Previously, the new blocking stub API was identical to the older blocking stub for unary RPCs and used the unchecked \u003ccode\u003eStatusRuntimeException\u003c/code\u003e. However, feedback demonstrated it was confusing to mix that with the checked \u003ccode\u003eStatusException\u003c/code\u003e in \u003ccode\u003eBlockingClientCall\u003c/code\u003e. Now the new blocking stub uses StatusException throughout. grpc-java continues to support the old generated code, but the version of protoc-gen-grpc-java will dictate which API you see. If you support multiple generated code versions, you can use the older blocking v1 stub for unary RPCs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Fix a race that caused RPCs to hang on start when a GOAWAY was received while the RPCs’ headers were being written to the OS (b04c673fd, 15c757398). This was a very old race, not a recent regression. All streams should now properly fail instead of hanging, although in some cases they may be transparently retried\u003c/li\u003e\n\u003cli\u003eutil: OutlierDetection should use nanoTime, not currentTimeMillis (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12110\"\u003e#12110\u003c/a\u003e) (1c4309899). Previously, changes in the wall time would impact its accounting\u003c/li\u003e\n\u003cli\u003exds: Don't allow hostnames in address field in EDS (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12123\"\u003e#12123\u003c/a\u003e) (482dc5c1c). Only IP addresses were handled properly, and only IP addresses should be handled per gRFC A27\u003c/li\u003e\n\u003cli\u003exds: In resource handling, call onError() for RDS and EDS NACKs (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12122\"\u003e#12122\u003c/a\u003e) (efe9ccc22). Previously the resource was NACKed, but gRPC would continue waiting for the resource until a timeout was reached and claim the control plane didn’t send the resource. Now it will fail quickly with an informative error\u003c/li\u003e\n\u003cli\u003exds: Implement equals in RingHashConfig (a5eaa66cc). Previously all configuration refreshes were considered a new config, which had the potential for causing unexpected inefficiency problems. This was noticed by new code for gRFC A74 xDS Config Tears that is not yet enabled, so there are no known problems that this caused\u003c/li\u003e\n\u003cli\u003eLBs should avoid calling LBs after lb.shutdown() (1df2a3305). This fixed pick_first and ring_hash behavior that could cause rare and “random” races in parent load balancers like a \u003ccode\u003eNullPointerException\u003c/code\u003e in \u003ccode\u003eClusterImplLoadBalancer.createSubchannel()\u003c/code\u003e, which had a ring_hash child. This is most likely to help xDS, as it heavily uses hierarchical LB policies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Deliver addresses in a random order to shuffle connection creation ordering (f07eb47ca). Previously, connections were created in-order (but non-blocking), so in a fast network the first address could be more likely to connect first given a \u0026quot;microsecond\u0026quot; headstart. That first connection then receives all the buffered RPCs, which could cause temporary, but repeated, load imbalances of the same backend when all clients receive the same list of addresses in the same order. This has been seen in practice, but it is unclear how often it happens. Shuffling has the potential to improve load distribution of new clients when using round_robin, weighted_round_robin, and least_request, which connect simultaneously to multiple addresses\u003c/li\u003e\n\u003cli\u003ecore: Use lazy message formatting in checkState (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12144\"\u003e#12144\u003c/a\u003e) (26bd0eee4). This avoids the potential of unnecessarily formatting an exception as a string when a subchannel fails to connect\u003c/li\u003e\n\u003cli\u003ebazel: Migrate java_grpc_library to use DefaultInfo (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12148\"\u003e#12148\u003c/a\u003e) (6f69363d9). This adds compatibility for \u003ccode\u003e--incompatible_disable_target_default_provider_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebinder: Rationalize \u003ca href=\"https://github.com/ThreadSafe-ty\"\u003e\u003ccode\u003e@​ThreadSafe-ty\u003c/code\u003e\u003c/a\u003e inside BinderTransport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12130\"\u003e#12130\u003c/a\u003e) (c20642874)\u003c/li\u003e\n\u003cli\u003ebinder: Cancel checkAuthorization() request if still pending upon termination (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12167\"\u003e#12167\u003c/a\u003e) (30d40a617)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Upgrade Protobuf C++ to 22.5 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11961\"\u003e#11961\u003c/a\u003e) (46485c8b6). This is used by the pre-built protoc-gen-grpc-java plugin on Maven Central. This should have no visible benefit, but gets us closer to upgrading to Protobuf 27 which added edition 2023 support\u003c/li\u003e\n\u003cli\u003erelease: Migrate artifacts publishing changed from legacy OSSRH to Central Portal (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12156\"\u003e#12156\u003c/a\u003e) (f99b2aaef). We aren’t aware of any visible changes to the results on Maven Central\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/9d2c895c29ad505ea564ccf9369678e5478152e5\"\u003e\u003ccode\u003e9d2c895\u003c/code\u003e\u003c/a\u003e Bump version to 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b58900e759483272f6aa12bb8038cf178e62d803\"\u003e\u003ccode\u003eb58900e\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/15c7573988fab5c9893c1d86f0d23f1cd4b683f8\"\u003e\u003ccode\u003e15c7573\u003c/code\u003e\u003c/a\u003e netty: Associate netty stream eagerly to avoid client hang\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b04c673fdfec6191afdca06fa254b9e4da0150f6\"\u003e\u003ccode\u003eb04c673\u003c/code\u003e\u003c/a\u003e Guarantee missing stream promise delivery\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/1df2a330568b2131fd2fda77cf85c948dba19ae0\"\u003e\u003ccode\u003e1df2a33\u003c/code\u003e\u003c/a\u003e LBs should avoid calling LBs after lb.shutdown()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5eaa66ccc2add0c9b78096ca3196ec1c7904c1f\"\u003e\u003ccode\u003ea5eaa66\u003c/code\u003e\u003c/a\u003e xds: Implement equals in RingHashConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/393f02b117a2c2e204029274a9266b5c64124062\"\u003e\u003ccode\u003e393f02b\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Convert CdsLb to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/69b8cf5f2611c580fa1e5ee3a4ad9e42919e49c6\"\u003e\u003ccode\u003e69b8cf5\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Support tracking non-xds resources in XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/98e4252e3408e804162a86e38466a90c5d10a817\"\u003e\u003ccode\u003e98e4252\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: XdsNR should be subscribing to clusters with XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3b63af411d32bb274a69bb14b1e5aac8ffca2f45\"\u003e\u003ccode\u003e3b63af4\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Add logical dns cluster support to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.74.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-services` from 1.70.0 to 1.74.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-services's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.74.0\u003c/h2\u003e\n\u003ch3\u003eBehavior Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Default to \u003ccode\u003e@generated=omit\u003c/code\u003e (f8700a13a). This omits \u003ccode\u003ejavax.annotation.Generated\u003c/code\u003e from the generated code and makes the \u003ccode\u003eorg.apache.tomcat:annotations-api\u003c/code\u003e compile-only dependency unnecessary (README and examples changes forthcoming; we delayed those changes until the release landed). You can use the option \u003ccode\u003e@generated=javax\u003c/code\u003e for the previous behavior, but please also file an issue so we can develop alternatives\u003c/li\u003e\n\u003cli\u003ecompiler: generate blocking v2 unary calls that throw StatusException (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12126\"\u003e#12126\u003c/a\u003e) (a16d65591). Previously, the new blocking stub API was identical to the older blocking stub for unary RPCs and used the unchecked \u003ccode\u003eStatusRuntimeException\u003c/code\u003e. However, feedback demonstrated it was confusing to mix that with the checked \u003ccode\u003eStatusException\u003c/code\u003e in \u003ccode\u003eBlockingClientCall\u003c/code\u003e. Now the new blocking stub uses StatusException throughout. grpc-java continues to support the old generated code, but the version of protoc-gen-grpc-java will dictate which API you see. If you support multiple generated code versions, you can use the older blocking v1 stub for unary RPCs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Fix a race that caused RPCs to hang on start when a GOAWAY was received while the RPCs’ headers were being written to the OS (b04c673fd, 15c757398). This was a very old race, not a recent regression. All streams should now properly fail instead of hanging, although in some cases they may be transparently retried\u003c/li\u003e\n\u003cli\u003eutil: OutlierDetection should use nanoTime, not currentTimeMillis (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12110\"\u003e#12110\u003c/a\u003e) (1c4309899). Previously, changes in the wall time would impact its accounting\u003c/li\u003e\n\u003cli\u003exds: Don't allow hostnames in address field in EDS (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12123\"\u003e#12123\u003c/a\u003e) (482dc5c1c). Only IP addresses were handled properly, and only IP addresses should be handled per gRFC A27\u003c/li\u003e\n\u003cli\u003exds: In resource handling, call onError() for RDS and EDS NACKs (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12122\"\u003e#12122\u003c/a\u003e) (efe9ccc22). Previously the resource was NACKed, but gRPC would continue waiting for the resource until a timeout was reached and claim the control plane didn’t send the resource. Now it will fail quickly with an informative error\u003c/li\u003e\n\u003cli\u003exds: Implement equals in RingHashConfig (a5eaa66cc). Previously all configuration refreshes were considered a new config, which had the potential for causing unexpected inefficiency problems. This was noticed by new code for gRFC A74 xDS Config Tears that is not yet enabled, so there are no known problems that this caused\u003c/li\u003e\n\u003cli\u003eLBs should avoid calling LBs after lb.shutdown() (1df2a3305). This fixed pick_first and ring_hash behavior that could cause rare and “random” races in parent load balancers like a \u003ccode\u003eNullPointerException\u003c/code\u003e in \u003ccode\u003eClusterImplLoadBalancer.createSubchannel()\u003c/code\u003e, which had a ring_hash child. This is most likely to help xDS, as it heavily uses hierarchical LB policies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Deliver addresses in a random order to shuffle connection creation ordering (f07eb47ca). Previously, connections were created in-order (but non-blocking), so in a fast network the first address could be more likely to connect first given a \u0026quot;microsecond\u0026quot; headstart. That first connection then receives all the buffered RPCs, which could cause temporary, but repeated, load imbalances of the same backend when all clients receive the same list of addresses in the same order. This has been seen in practice, but it is unclear how often it happens. Shuffling has the potential to improve load distribution of new clients when using round_robin, weighted_round_robin, and least_request, which connect simultaneously to multiple addresses\u003c/li\u003e\n\u003cli\u003ecore: Use lazy message formatting in checkState (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12144\"\u003e#12144\u003c/a\u003e) (26bd0eee4). This avoids the potential of unnecessarily formatting an exception as a string when a subchannel fails to connect\u003c/li\u003e\n\u003cli\u003ebazel: Migrate java_grpc_library to use DefaultInfo (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12148\"\u003e#12148\u003c/a\u003e) (6f69363d9). This adds compatibility for \u003ccode\u003e--incompatible_disable_target_default_provider_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebinder: Rationalize \u003ca href=\"https://github.com/ThreadSafe-ty\"\u003e\u003ccode\u003e@​ThreadSafe-ty\u003c/code\u003e\u003c/a\u003e inside BinderTransport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12130\"\u003e#12130\u003c/a\u003e) (c20642874)\u003c/li\u003e\n\u003cli\u003ebinder: Cancel checkAuthorization() request if still pending upon termination (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12167\"\u003e#12167\u003c/a\u003e) (30d40a617)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecompiler: Upgrade Protobuf C++ to 22.5 (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11961\"\u003e#11961\u003c/a\u003e) (46485c8b6). This is used by the pre-built protoc-gen-grpc-java plugin on Maven Central. This should have no visible benefit, but gets us closer to upgrading to Protobuf 27 which added edition 2023 support\u003c/li\u003e\n\u003cli\u003erelease: Migrate artifacts publishing changed from legacy OSSRH to Central Portal (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12156\"\u003e#12156\u003c/a\u003e) (f99b2aaef). We aren’t aware of any visible changes to the results on Maven Central\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/9d2c895c29ad505ea564ccf9369678e5478152e5\"\u003e\u003ccode\u003e9d2c895\u003c/code\u003e\u003c/a\u003e Bump version to 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b58900e759483272f6aa12bb8038cf178e62d803\"\u003e\u003ccode\u003eb58900e\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.74.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/15c7573988fab5c9893c1d86f0d23f1cd4b683f8\"\u003e\u003ccode\u003e15c7573\u003c/code\u003e\u003c/a\u003e netty: Associate netty stream eagerly to avoid client hang\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/b04c673fdfec6191afdca06fa254b9e4da0150f6\"\u003e\u003ccode\u003eb04c673\u003c/code\u003e\u003c/a\u003e Guarantee missing stream promise delivery\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/1df2a330568b2131fd2fda77cf85c948dba19ae0\"\u003e\u003ccode\u003e1df2a33\u003c/code\u003e\u003c/a\u003e LBs should avoid calling LBs after lb.shutdown()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/a5eaa66ccc2add0c9b78096ca3196ec1c7904c1f\"\u003e\u003ccode\u003ea5eaa66\u003c/code\u003e\u003c/a\u003e xds: Implement equals in RingHashConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/393f02b117a2c2e204029274a9266b5c64124062\"\u003e\u003ccode\u003e393f02b\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Convert CdsLb to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/69b8cf5f2611c580fa1e5ee3a4ad9e42919e49c6\"\u003e\u003ccode\u003e69b8cf5\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Support tracking non-xds resources in XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/98e4252e3408e804162a86e38466a90c5d10a817\"\u003e\u003ccode\u003e98e4252\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: XdsNR should be subscribing to clusters with XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/3b63af411d32bb274a69bb14b1e5aac8ffca2f45\"\u003e\u003ccode\u003e3b63af4\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;xds: Add logical dns cluster support to XdsDepManager\u0026quot;\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.74.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/hemicharly/grpc-spring-boot-3/pull/59","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemicharly%2Fgrpc-spring-boot-3/issues/59","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/59/packages"}},{"old_version":"1.55.1","new_version":"1.73.0","update_type":"minor","path":"/backend","pr_created_at":"2025-06-12T13:20:13.000Z","version_change":"1.55.1 → 1.73.0","issue":{"uuid":"2587336206","node_id":"PR_kwDOKVqxZ86aN54O","number":1256,"state":"open","title":"chore(deps): bump io.grpc.version from 1.55.1 to 1.73.0 in /backend","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-06-12T13:20:13.000Z","updated_at":"2025-06-12T13:20:14.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"io.grpc.version","old_version":"1.55.1","new_version":"1.73.0","repository_url":null}],"path":"/backend","ecosystem":"maven"},"body":"Bumps `io.grpc.version` from 1.55.1 to 1.73.0.\nUpdates `io.grpc:grpc-okhttp` from 1.55.1 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-okhttp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cp\u003eapi: Remove mention of \u0026quot;epoch\u0026quot; from Ticker.nanoTime() javadocs (84bd01454)\u003c/p\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.55.1...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-netty` from 1.55.1 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-netty's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cp\u003eapi: Remove mention of \u0026quot;epoch\u0026quot; from Ticker.nanoTime() javadocs (84bd01454)\u003c/p\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.55.1...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-protobuf` from 1.55.1 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-protobuf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cp\u003eapi: Remove mention of \u0026quot;epoch\u0026quot; from Ticker.nanoTime() javadocs (84bd01454)\u003c/p\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.55.1...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-stub` from 1.55.1 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-stub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cp\u003eapi: Remove mention of \u0026quot;epoch\u0026quot; from Ticker.nanoTime() javadocs (84bd01454)\u003c/p\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.55.1...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-core` from 1.55.1 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.73.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cp\u003exds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\ncore: Delete the long-deprecated GRPC_PROXY_EXP env variable (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11988\"\u003e#11988\u003c/a\u003e) (908f9f19c). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead\napi: Remove deprecated SubchannelPicker.requestConnection() (f79ab2f16). This API was replaced by LoadBalancer.requestConnection() in v1.22.0\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cp\u003econfig: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11991\"\u003e#11991\u003c/a\u003e) (d4c46a7f1)\nxds: XdsDepManager should ignore updates after shutdown (25199e9df). This fixes a source of java.lang.NullPointerException: Cannot invoke \u0026quot;io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\u0026quot; because \u0026quot;routeSource\u0026quot; is null regression introduced in v1.72.0\u003c/p\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cp\u003exds: listener type validation (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11933\"\u003e#11933\u003c/a\u003e) (c8d1e6e39)\nxds: add the missing xds.authority metric defined in \u003ca href=\"https://github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient\"\u003egRFC A78\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12018\"\u003e#12018\u003c/a\u003e) (6cd007d0d)\u003c/p\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cp\u003exds: float LRU cache across interceptors (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11992\"\u003e#11992\u003c/a\u003e) (7a08fdb7f)\nxds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11972\"\u003e#11972\u003c/a\u003e) (84c7713b2)\nopentelemetry: Implement grpc.lb.backend_service optional label (961945379). This completes the \u003ca href=\"https://github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md\"\u003egRFC A89\u003c/a\u003e implementation, which is enabled when requesting the new label\u003c/p\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cp\u003eapi: Remove mention of \u0026quot;epoch\u0026quot; from Ticker.nanoTime() javadocs (84bd01454)\u003c/p\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.55.1...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/utmstack/UTMStack/pull/1256","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/utmstack%2FUTMStack/issues/1256","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1256/packages"}},{"old_version":"1.70.0","new_version":"1.73.0","update_type":"minor","path":null,"pr_created_at":"2025-06-02T10:46:08.000Z","version_change":"1.70.0 → 1.73.0","issue":{"uuid":"2560168479","node_id":"PR_kwDOK4L0VM6YmRIf","number":55,"state":"open","title":"chore(deps): bump io.grpc.version from 1.70.0 to 1.73.0","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-06-02T10:46:08.000Z","updated_at":"2025-06-02T10:46:09.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"io.grpc.version","old_version":"1.70.0","new_version":"1.73.0","repository_url":null}],"path":null,"ecosystem":"maven"},"body":"Bumps `io.grpc.version` from 1.70.0 to 1.73.0.\nUpdates `io.grpc:grpc-netty-shaded` from 1.70.0 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-netty-shaded's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003cli\u003exds: avoid unnecessary dns lookup for CIDR addresses (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11932\"\u003e#11932\u003c/a\u003e) (602aece08)\u003c/li\u003e\n\u003cli\u003enetty: Swap to UniformStreamByteDistributor (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11954\"\u003e#11954\u003c/a\u003e) (2f52a0036). gRPC will no longer observe the HTTP/2 priorities, which were not used directly by gRPC and deprecated in RFC 9113\u003c/li\u003e\n\u003cli\u003ecore: Avoid Set.removeAll() when passing a possibly-large List (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11994\"\u003e#11994\u003c/a\u003e) (666136b4b)\u003c/li\u003e\n\u003cli\u003estub: trailersFromThrowable() metadata should be copied (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11979\"\u003e#11979\u003c/a\u003e) (a6e1c1f09)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003exds: xDS-based HTTP CONNECT configuration (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11861\"\u003e#11861\u003c/a\u003e) (12197065f)\u003c/li\u003e\n\u003cli\u003enetty: Per-rpc authority verification against peer cert subject names. Overriding transport authority at rpc time is only allowed when using TlsChannelCredentials. The per-rpc authority verification feature is guarded by the environment variable GRPC_ENABLE_PER_RPC_AUTHORITY_CHECK in this release. When this is false or not set, the rpc will not fail when the authority verification fails but a warning will be logged. In a subsequent release the usage of this environment variable will be removed and RPCs will start failing if the authority doesn't match the peer certificate names. The environment variable is temporary; if you are depending on the existing insecure behavior, please file an issue (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11724\"\u003e#11724\u003c/a\u003e) (cdab410b8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/panchenko\"\u003e\u003ccode\u003e@​panchenko\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/JoeCqupt\"\u003e\u003ccode\u003e@​JoeCqupt\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eV1.71.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Enable Xds Client Fallback by default.  This allows having a backup xDS server as described in gRFC \u003ca href=\"https://github.com/grpc/proposal/blob/master/A71-xds-fallback.md\"\u003eA71-xds-fallback.md\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11817\"\u003e#11817\u003c/a\u003e) (176f3eed1)\u003c/li\u003e\n\u003cli\u003eprotobuf: Experimental API marshallerWithRecursionLimit in \u003ccode\u003eProtoUtils\u003c/code\u003e is now stabilized (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11884\"\u003e#11884\u003c/a\u003e) (90b1c4fe9)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Cluster weights should be uint32 (199a7ea3e). They were previously processed as int32, although the sum of weights was checked to be positive. So this would have caused a very large weight to never be selected and to reduce the chances of immediately-following clusters to be selected. There have been no reports of control planes using such large weights\u003c/li\u003e\n\u003cli\u003exds: Fix an unlikely infinite loop triggered by route update (199a7ea3e). Triggering required the old cluster to no longer be used, an RPC processing when the update arrived, and for a RPC to not match any route in the new config. There have been no reports of this actually happening\u003c/li\u003e\n\u003cli\u003ecore: Release data frame if it is received before the headers (dc316f7fd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-protobuf` from 1.70.0 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-protobuf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003cli\u003exds: avoid unnecessary dns lookup for CIDR addresses (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11932\"\u003e#11932\u003c/a\u003e) (602aece08)\u003c/li\u003e\n\u003cli\u003enetty: Swap to UniformStreamByteDistributor (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11954\"\u003e#11954\u003c/a\u003e) (2f52a0036). gRPC will no longer observe the HTTP/2 priorities, which were not used directly by gRPC and deprecated in RFC 9113\u003c/li\u003e\n\u003cli\u003ecore: Avoid Set.removeAll() when passing a possibly-large List (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11994\"\u003e#11994\u003c/a\u003e) (666136b4b)\u003c/li\u003e\n\u003cli\u003estub: trailersFromThrowable() metadata should be copied (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11979\"\u003e#11979\u003c/a\u003e) (a6e1c1f09)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003exds: xDS-based HTTP CONNECT configuration (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11861\"\u003e#11861\u003c/a\u003e) (12197065f)\u003c/li\u003e\n\u003cli\u003enetty: Per-rpc authority verification against peer cert subject names. Overriding transport authority at rpc time is only allowed when using TlsChannelCredentials. The per-rpc authority verification feature is guarded by the environment variable GRPC_ENABLE_PER_RPC_AUTHORITY_CHECK in this release. When this is false or not set, the rpc will not fail when the authority verification fails but a warning will be logged. In a subsequent release the usage of this environment variable will be removed and RPCs will start failing if the authority doesn't match the peer certificate names. The environment variable is temporary; if you are depending on the existing insecure behavior, please file an issue (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11724\"\u003e#11724\u003c/a\u003e) (cdab410b8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/panchenko\"\u003e\u003ccode\u003e@​panchenko\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/JoeCqupt\"\u003e\u003ccode\u003e@​JoeCqupt\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eV1.71.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Enable Xds Client Fallback by default.  This allows having a backup xDS server as described in gRFC \u003ca href=\"https://github.com/grpc/proposal/blob/master/A71-xds-fallback.md\"\u003eA71-xds-fallback.md\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11817\"\u003e#11817\u003c/a\u003e) (176f3eed1)\u003c/li\u003e\n\u003cli\u003eprotobuf: Experimental API marshallerWithRecursionLimit in \u003ccode\u003eProtoUtils\u003c/code\u003e is now stabilized (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11884\"\u003e#11884\u003c/a\u003e) (90b1c4fe9)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Cluster weights should be uint32 (199a7ea3e). They were previously processed as int32, although the sum of weights was checked to be positive. So this would have caused a very large weight to never be selected and to reduce the chances of immediately-following clusters to be selected. There have been no reports of control planes using such large weights\u003c/li\u003e\n\u003cli\u003exds: Fix an unlikely infinite loop triggered by route update (199a7ea3e). Triggering required the old cluster to no longer be used, an RPC processing when the update arrived, and for a RPC to not match any route in the new config. There have been no reports of this actually happening\u003c/li\u003e\n\u003cli\u003ecore: Release data frame if it is received before the headers (dc316f7fd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-stub` from 1.70.0 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-stub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003cli\u003exds: avoid unnecessary dns lookup for CIDR addresses (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11932\"\u003e#11932\u003c/a\u003e) (602aece08)\u003c/li\u003e\n\u003cli\u003enetty: Swap to UniformStreamByteDistributor (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11954\"\u003e#11954\u003c/a\u003e) (2f52a0036). gRPC will no longer observe the HTTP/2 priorities, which were not used directly by gRPC and deprecated in RFC 9113\u003c/li\u003e\n\u003cli\u003ecore: Avoid Set.removeAll() when passing a possibly-large List (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11994\"\u003e#11994\u003c/a\u003e) (666136b4b)\u003c/li\u003e\n\u003cli\u003estub: trailersFromThrowable() metadata should be copied (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11979\"\u003e#11979\u003c/a\u003e) (a6e1c1f09)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003exds: xDS-based HTTP CONNECT configuration (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11861\"\u003e#11861\u003c/a\u003e) (12197065f)\u003c/li\u003e\n\u003cli\u003enetty: Per-rpc authority verification against peer cert subject names. Overriding transport authority at rpc time is only allowed when using TlsChannelCredentials. The per-rpc authority verification feature is guarded by the environment variable GRPC_ENABLE_PER_RPC_AUTHORITY_CHECK in this release. When this is false or not set, the rpc will not fail when the authority verification fails but a warning will be logged. In a subsequent release the usage of this environment variable will be removed and RPCs will start failing if the authority doesn't match the peer certificate names. The environment variable is temporary; if you are depending on the existing insecure behavior, please file an issue (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11724\"\u003e#11724\u003c/a\u003e) (cdab410b8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/panchenko\"\u003e\u003ccode\u003e@​panchenko\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/JoeCqupt\"\u003e\u003ccode\u003e@​JoeCqupt\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eV1.71.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Enable Xds Client Fallback by default.  This allows having a backup xDS server as described in gRFC \u003ca href=\"https://github.com/grpc/proposal/blob/master/A71-xds-fallback.md\"\u003eA71-xds-fallback.md\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11817\"\u003e#11817\u003c/a\u003e) (176f3eed1)\u003c/li\u003e\n\u003cli\u003eprotobuf: Experimental API marshallerWithRecursionLimit in \u003ccode\u003eProtoUtils\u003c/code\u003e is now stabilized (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11884\"\u003e#11884\u003c/a\u003e) (90b1c4fe9)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Cluster weights should be uint32 (199a7ea3e). They were previously processed as int32, although the sum of weights was checked to be positive. So this would have caused a very large weight to never be selected and to reduce the chances of immediately-following clusters to be selected. There have been no reports of control planes using such large weights\u003c/li\u003e\n\u003cli\u003exds: Fix an unlikely infinite loop triggered by route update (199a7ea3e). Triggering required the old cluster to no longer be used, an RPC processing when the update arrived, and for a RPC to not match any route in the new config. There have been no reports of this actually happening\u003c/li\u003e\n\u003cli\u003ecore: Release data frame if it is received before the headers (dc316f7fd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.grpc:grpc-services` from 1.70.0 to 1.73.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc-java/releases\"\u003eio.grpc:grpc-services's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eV1.72.0\u003c/h2\u003e\n\u003ch3\u003eAPI Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eutil: Remove deprecated method GracefulSwitchLb.switchTo() (f207be39a). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead\u003c/li\u003e\n\u003cli\u003exds: Add support for custom per-target credentials on the transport (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11951\"\u003e#11951\u003c/a\u003e) (1958e4237)\u003c/li\u003e\n\u003cli\u003exds: Explicitly set request hash key for the ring hash LB policy (892144dca)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecore: Apply ManagedChannelImpl's updateBalancingState() immediately (ca4819ac6)\u003c/li\u003e\n\u003cli\u003exds: Fix cluster selection races when updating config selector (d82613a74)\u003c/li\u003e\n\u003cli\u003eotel: Fix span names as per the A72 gRFC changes (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11974\"\u003e#11974\u003c/a\u003e) (94f8e9369)\u003c/li\u003e\n\u003cli\u003exds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11997\"\u003e#11997\u003c/a\u003e) (868178651)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003enetty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing (a57c14a51)\u003c/li\u003e\n\u003cli\u003eservlet: Set an explicit description for CANCELLED status (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11927\"\u003e#11927\u003c/a\u003e) (fca1d3cf4)\u003c/li\u003e\n\u003cli\u003exds: \u003ca href=\"https://github.com/grpc/proposal/blob/master/A74-xds-config-tears.md\"\u003egRFC A74 xDS Config Tears\u003c/a\u003e implementation in the XdsNameResolver (e80c19745). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition\u003c/li\u003e\n\u003cli\u003ecore: Log any exception during channel panic because of exception (3961a923a). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details\u003c/li\u003e\n\u003cli\u003eutil: Graceful switch to new LB when leaving CONNECTING (2e260a4bb). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE\u003c/li\u003e\n\u003cli\u003ecore: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11977\"\u003e#11977\u003c/a\u003e) (7507a9ec0)\u003c/li\u003e\n\u003cli\u003ecore: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11934\"\u003e#11934\u003c/a\u003e) (350f90e1a)\u003c/li\u003e\n\u003cli\u003erls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11931\"\u003e#11931\u003c/a\u003e) (c340f4a2f)\u003c/li\u003e\n\u003cli\u003exds: avoid unnecessary dns lookup for CIDR addresses (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11932\"\u003e#11932\u003c/a\u003e) (602aece08)\u003c/li\u003e\n\u003cli\u003enetty: Swap to UniformStreamByteDistributor (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11954\"\u003e#11954\u003c/a\u003e) (2f52a0036). gRPC will no longer observe the HTTP/2 priorities, which were not used directly by gRPC and deprecated in RFC 9113\u003c/li\u003e\n\u003cli\u003ecore: Avoid Set.removeAll() when passing a possibly-large List (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11994\"\u003e#11994\u003c/a\u003e) (666136b4b)\u003c/li\u003e\n\u003cli\u003estub: trailersFromThrowable() metadata should be copied (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11979\"\u003e#11979\u003c/a\u003e) (a6e1c1f09)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003exds: xDS-based HTTP CONNECT configuration (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11861\"\u003e#11861\u003c/a\u003e) (12197065f)\u003c/li\u003e\n\u003cli\u003enetty: Per-rpc authority verification against peer cert subject names. Overriding transport authority at rpc time is only allowed when using TlsChannelCredentials. The per-rpc authority verification feature is guarded by the environment variable GRPC_ENABLE_PER_RPC_AUTHORITY_CHECK in this release. When this is false or not set, the rpc will not fail when the authority verification fails but a warning will be logged. In a subsequent release the usage of this environment variable will be removed and RPCs will start failing if the authority doesn't match the peer certificate names. The environment variable is temporary; if you are depending on the existing insecure behavior, please file an issue (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11724\"\u003e#11724\u003c/a\u003e) (cdab410b8)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eThanks to\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/panchenko\"\u003e\u003ccode\u003e@​panchenko\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/JoeCqupt\"\u003e\u003ccode\u003e@​JoeCqupt\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eV1.71.0\u003c/h2\u003e\n\u003ch2\u003eAPI Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Enable Xds Client Fallback by default.  This allows having a backup xDS server as described in gRFC \u003ca href=\"https://github.com/grpc/proposal/blob/master/A71-xds-fallback.md\"\u003eA71-xds-fallback.md\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11817\"\u003e#11817\u003c/a\u003e) (176f3eed1)\u003c/li\u003e\n\u003cli\u003eprotobuf: Experimental API marshallerWithRecursionLimit in \u003ccode\u003eProtoUtils\u003c/code\u003e is now stabilized (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/11884\"\u003e#11884\u003c/a\u003e) (90b1c4fe9)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003exds: Cluster weights should be uint32 (199a7ea3e). They were previously processed as int32, although the sum of weights was checked to be positive. So this would have caused a very large weight to never be selected and to reduce the chances of immediately-following clusters to be selected. There have been no reports of control planes using such large weights\u003c/li\u003e\n\u003cli\u003exds: Fix an unlikely infinite loop triggered by route update (199a7ea3e). Triggering required the old cluster to no longer be used, an RPC processing when the update arrived, and for a RPC to not match any route in the new config. There have been no reports of this actually happening\u003c/li\u003e\n\u003cli\u003ecore: Release data frame if it is received before the headers (dc316f7fd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/7f28d46c1083db30af5001888a33e1867c53d474\"\u003e\u003ccode\u003e7f28d46\u003c/code\u003e\u003c/a\u003e Bump version to 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/471748102fdd55586b110bc9c4c54b337ffd664f\"\u003e\u003ccode\u003e4717481\u003c/code\u003e\u003c/a\u003e Update README etc to reference 1.73.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/bfb55b5553a29e84d1f2ecd20699bc4e57ac3520\"\u003e\u003ccode\u003ebfb55b5\u003c/code\u003e\u003c/a\u003e xds: Add GcpAuthenticationFilter to FilterRegistry (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12075\"\u003e#12075\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12086\"\u003e#12086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/86136725f002533248e09a6ebfb3289a4627819f\"\u003e\u003ccode\u003e8613672\u003c/code\u003e\u003c/a\u003e Rename PSM interop fallback test suite to light (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12092\"\u003e#12092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/165e47699fa673f2d1f65dd8fa8b067baf111d08\"\u003e\u003ccode\u003e165e476\u003c/code\u003e\u003c/a\u003e alts: add experimental keepalive (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12076\"\u003e#12076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/e7722655302df4fc2a7effbb4de839c7b99e2bb5\"\u003e\u003ccode\u003ee772265\u003c/code\u003e\u003c/a\u003e xds: Enable least request by default (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12054\"\u003e#12054\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12062\"\u003e#12062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/6baac45bd238f6a4cdc4275840808c52a9162679\"\u003e\u003ccode\u003e6baac45\u003c/code\u003e\u003c/a\u003e xds: Fix pretty-print of Cluster with WrrLocality and LB policies (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12037\"\u003e#12037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/454f1c5c6acc46e3d93ddf434a4e77943f5f52ec\"\u003e\u003ccode\u003e454f1c5\u003c/code\u003e\u003c/a\u003e binder: Create a Robolectric version of BinderTransportTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12057\"\u003e#12057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/64fe061ccd0b8e57fdb54b983d58f235d568c55a\"\u003e\u003ccode\u003e64fe061\u003c/code\u003e\u003c/a\u003e Simplify RobolectricBinderSecurityTest (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12058\"\u003e#12058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc-java/commit/80cc988b3c2ed8961d0df9df0af13e297c522084\"\u003e\u003ccode\u003e80cc988\u003c/code\u003e\u003c/a\u003e xds: Use acceptResolvedAddresses() for WeightedTarget children (\u003ca href=\"https://redirect.github.com/grpc/grpc-java/issues/12053\"\u003e#12053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc-java/compare/v1.70.0...v1.73.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/hemicharly/grpc-spring-boot-3/pull/55","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemicharly%2Fgrpc-spring-boot-3/issues/55","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/55/packages"}}]}