Commit Graph

1160 Commits

Author SHA1 Message Date
Tanvi Jagtap
ee5ccee552 [Gpr_To_Absl_Logging] Remove GRPC_API_TRACE (#37190)
[Gpr_To_Absl_Logging] Remove GRPC_API_TRACE .
This will be replaced by GRPC_TRACE_LOG

Closes #37190

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/37190 from tanvi-jagtap:grpc_api_trace_fix 6dae72bc6e69cc5bef2fcc7b87fe4fdfa62e72f6
PiperOrigin-RevId: 652397141
2024-07-15 01:29:59 -07:00
Esun Kim
62401f643c [Dep] Roll-foward "Upgrading Protobuf to v27.0 (#36753)" (#37182)
Closes #37182

PiperOrigin-RevId: 650413156
2024-07-08 16:42:21 -07:00
Eugene Ostroukhov
c92b43388c [Dep] Revert "Upgrading Protobuf to v27.0 (#36753)" (#37125)
This reverts commit 0ffab55534.

Closes #37125

PiperOrigin-RevId: 648750887
2024-07-02 09:57:14 -07:00
Mark D. Roth
62826f5f6e [xDS] refactor BUILD targets for resource types (#37130)
This moves more code out of the monolithic `grpc_xds_client` BUILD target.  We still need more work to split it up completely, but this is a nice step in the right direction -- and it unblocks a subsequent PR that I'm working on for xDS authority rewriting.

Closes #37130

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/37130 from markdroth:xds_resource_type_build_refactoring a021d9773c7711b252caf3a53985a46f135b9250
PiperOrigin-RevId: 648742472
2024-07-02 09:27:36 -07:00
Craig Tiller
51d012475d [sanity] fix? (#37133)
Closes #37133

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/37133 from ctiller:nup eee790d278968d764c578c4671728f82e768acea
PiperOrigin-RevId: 648545945
2024-07-01 18:22:26 -07:00
Esun Kim
0ffab55534 [Dep] Upgrading Protobuf to v27.0 (#36753)
Closes #36753

PiperOrigin-RevId: 647792433
2024-06-28 14:09:18 -07:00
Craig Tiller
e1b61766fc [latency] New latency visualization tool (#36964)
Adds a build config - latent_see - that configures a module and some macros to allow recording of latency information through the stack and across threads. One can then use tools that understand the chromium event trace format (eg `ui.perfetto.dev`) to visualize the traces.

![image](https://github.com/grpc/grpc/assets/10120821/d936ac0c-7be0-4572-a62b-826b29344421)

Closes #36964

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36964 from ctiller:latent-see 2c109f95753349900e67f50fddbc94f5711d974f
PiperOrigin-RevId: 647455107
2024-06-27 14:55:01 -07:00
Craig Tiller
ec7e4e2a96 [call-v3] Separate out the CallState class from CallFilters (#37003)
At the same time, inline all state machine functions and move the trace to its own (debug-only) trace var.

Before:
```
----------------------------------------------------------------------------------------------------
Benchmark                                                          Time             CPU   Iterations
----------------------------------------------------------------------------------------------------
grpc_core::BM_UnaryWithSpawnPerEnd<CallSpineFixture>            1171 ns         1171 ns      2373821
grpc_core::BM_UnaryWithSpawnPerOp<CallSpineFixture>             1326 ns         1326 ns      2124026
grpc_core::BM_ClientToServerStreaming<CallSpineFixture>          256 ns          256 ns     10512990
grpc_core::BM_UnaryWithSpawnPerEnd<ForwardCallFixture>          2957 ns         2957 ns       949121
grpc_core::BM_UnaryWithSpawnPerOp<ForwardCallFixture>           3172 ns         3172 ns       882463
grpc_core::BM_ClientToServerStreaming<ForwardCallFixture>        500 ns          500 ns      5765914
```

After:
```
----------------------------------------------------------------------------------------------------
Benchmark                                                          Time             CPU   Iterations
----------------------------------------------------------------------------------------------------
grpc_core::BM_UnaryWithSpawnPerEnd<CallSpineFixture>            1102 ns         1102 ns      2511682
grpc_core::BM_UnaryWithSpawnPerOp<CallSpineFixture>             1263 ns         1263 ns      2264222
grpc_core::BM_ClientToServerStreaming<CallSpineFixture>          252 ns          252 ns     11090774
grpc_core::BM_UnaryWithSpawnPerEnd<ForwardCallFixture>          2855 ns         2855 ns       987991
grpc_core::BM_UnaryWithSpawnPerOp<ForwardCallFixture>           3082 ns         3081 ns       901020
grpc_core::BM_ClientToServerStreaming<ForwardCallFixture>        490 ns          490 ns      5675073
```

Closes #37003

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/37003 from ctiller:excise-the-thing ab3943e828157e00d38a84f9652c08cea79dab02
PiperOrigin-RevId: 646493946
2024-06-25 08:51:29 -07:00
Mark D. Roth
34a0318dbf [LB policy API] change metadata mutation API to handle discarded picks (#36968)
Previously, metadata mutations were made by the picker directly, which meant that they would be applied even if the channel winds up discarding the pick due to the returned subchannel having been disconnected by the time the pick result is returned.  This changes the API such that pickers return metadata mutations along with the pick result, so that the mutations won't get applied unless the pick result is actually used.

Closes #36968

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36968 from markdroth:lb_metadata_api 2765da61214f3ae63da3fdb8e362fac625b51c5a
PiperOrigin-RevId: 645451869
2024-06-21 11:35:39 -07:00
AJ Heller
578b8fdb4d [tracing] Replace EE Trace macros with GRPC_TRACE_LOG (#36949)
Closes #36949

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36949 from drfloob:new-ee-trace 90a119e50276dbc20cb3d1c66199d1a41244170c
PiperOrigin-RevId: 644149042
2024-06-17 15:19:17 -07:00
Craig Tiller
e21467475f [call-v3] Direct channel implementation (#36734)
This change brings up the direct channel, and inproc promise based transports.

This work exposed a bug that was very difficult to fix with the current call_filters.cc implementation, so I've substantially revamped that - instead of having a pipe-like object per call element, we now have a big ol' combined state machine for the entire call. It's a touch more code, but substantially easier to reason about individual cases, so I much prefer this form (it's also a slight memory improvement: 12 bytes total to track call state, and 10 of those are wakeup bitmasks...).

Closes #36734

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36734 from ctiller:transport-refs-9 3e2a80b40d77e093c3d1aabedc16015478ee4bee
PiperOrigin-RevId: 644034593
2024-06-17 09:29:46 -07:00
Xuan Wang
f87084d64f [Release] Bump version to 1.66.0-dev (on master branch) (#36892)
Change was created by the release automation script. See go/grpc-release.

Closes #36892

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36892 from XuanWang-Amos:bump_dev_version_202406112301 9b2898d716af0d8dcd90aab23e35959cd6c38855
PiperOrigin-RevId: 643027546
2024-06-13 09:40:37 -07:00
Yousuk Seung
568fbfff8c [generic API] separate callback from cq in generic stub/service (#36447)
See https://github.com/grpc/proposal/pull/426

<!--

If you know who should review your pull request, please assign it to that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the appropriate
lang label.

-->

Closes #36447

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36447 from yousukseung:generic-stub-service-refactor 1cc0cbdc4b74450f631115fefc254976383eb816
PiperOrigin-RevId: 642774012
2024-06-12 16:22:17 -07:00
AJ Heller
c9fdef1317 [logging] Centralize configuration for trace flags (#36576)
All TraceFlags are now configured in `src/core/lib/debug/trace_flags.yaml`. The format is:

```
my_flag:
  default: false                   # the default value; default=false
  description: Some Description
  debug_only: false                # debug_only flags only work in debug builds; default=false
  internal: false                  # internal flags will not show up in documentation; default=false
```

To regenerate the trace flag source code, run `tools/codegen/core/gen_trace_flags.py` (requires mako). This script is also run when sanity checking.

This PR also adds two new features:

### Glob-based flag configuration

Trace flag configuration now supports `?` (single wildcard character) and `*` (one or more wildcard characters).  For example, using `GRPC_TRACE='event_engine*'` will enable all flags that match that glob. It expands to:

* event_engine
* event_engine_client_channel_resolver
* event_engine_dns
* event_engine_endpoint
* event_engine_endpoint_data
* event_engine_poller

### A cleaner trace-logging macro in abseil logging format

If your goal is only to add log statements when the `fault_injection_filter` trace flag is enabled, you can use the macro:

```
GRPC_TRACE_LOG(fault_injection, INFO) << "Filtered:" << 42;
```

When the trace flag is enabled, the the log will show something like this:
```
I0000 00:00:1715733657.430042      16 file.cc:174] Filtered:42
```

----

Note: just like with the gpr_log to abseil logging conversion, the pre-existing trace logging usages can be replaced with the new tracing macro across multiple PRs.

Closes #36576

PiperOrigin-RevId: 641295215
2024-06-07 10:47:38 -07:00
Craig Tiller
32a0218e6e [log] Use ABSL_ prefixed version of LOG/CHECK macros in the include/ tree (#36819)
We should separately add a lint to ensure no new usage slips in.

Closes #36819

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36819 from ctiller:absl 61207b02f45a6abf0d4d0ccba118a1c011586708
PiperOrigin-RevId: 640572209
2024-06-05 10:38:21 -07:00
Craig Tiller
90a649fd3f [call-v3] Client call implementation (#36724)
Closes #36724

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36724 from ctiller:transport-refs-8 51cf92ab82e0f4f5f0f7295d0c681b5232e6a4df
PiperOrigin-RevId: 640558652
2024-06-05 09:57:33 -07:00
Nana Pang
ae90b3ed01 [gRPC telemetry] Collect TCP connection metrics
PiperOrigin-RevId: 640253901
2024-06-04 12:57:30 -07:00
Craig Tiller
b2e14059a6 [context] Remove grpc_call_context_element (#36793)
Closes #36793

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36793 from ctiller:nukage 5bf4c34c12195fd302f53e215a29e97b10f529ae
PiperOrigin-RevId: 639806446
2024-06-03 09:16:05 -07:00
Mark D. Roth
e4daabc8bc [reorg] move ext/gcp/metadata_query.* -> util/gcp_metadata_query.* (#36789)
Also rename the class from `MetadataQuery` to `GcpMetadataQuery`.

Closes #36789

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36789 from markdroth:reorg_gcp_metadata_query d2b84f46be386b796690fc47bf27c42642c6408b
PiperOrigin-RevId: 639256546
2024-05-31 22:40:20 -07:00
Mark D. Roth
34ac4ee5de [grpc_error] remove unnecessary status attributes (#36523)
The following attributes were completely unused:
- kOffset
- kIndex
- kSize
- kFilename
- kKey
- kValue

The following attributes were added but never programmatically accessed, and I've moved them into the status messages themselves, which is another step toward #22883:
- kErrorNo
- kTsiCode
- kWsaError
- kHttpStatus
- kOsError
- kSyscall
- kTargetAddress
- kRawBytes
- kTsiError

Closes #36523

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36523 from markdroth:grpc_error_attribute_cleanup b289c399fed67322ac4f3de24b5cec5e81663886
PiperOrigin-RevId: 639147583
2024-05-31 14:11:42 -07:00
Mark D. Roth
82756e9ce0 Automated rollback of commit fbd8ebe7cd.
PiperOrigin-RevId: 638821486
2024-05-30 16:23:47 -07:00
gRPC Team Bot
fbd8ebe7cd Automated rollback of commit db2d775ffc.
PiperOrigin-RevId: 638442984
2024-05-29 16:09:03 -07:00
Craig Tiller
34871fafa3 [call-v3] New client channel implementation (#36723)
Closes #36723

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36723 from ctiller:transport-refs-7 e019b8f5eae524d25c9db8af2eefaec979a27835
PiperOrigin-RevId: 638424601
2024-05-29 15:06:01 -07:00
Mark D. Roth
db2d775ffc [reorg] move src/core/lib/http -> src/core/util/http_client (#36710)
Closes #36710

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36710 from markdroth:reorg_httpcli 6c751e34b21b1a24bad260ff06493edac37b21f9
PiperOrigin-RevId: 638358691
2024-05-29 11:42:19 -07:00
Mark D. Roth
fe817c8ab1 [reorg] move lib/json -> util/json (#36645)
Closes #36645

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36645 from markdroth:reorg_json 5b6434dd44a0d147731db08b7c2154f61d3b0ef9
PiperOrigin-RevId: 636757495
2024-05-23 19:51:49 -07:00
Mark D. Roth
6c08d36c3b [reorg] move telemetry code to src/core/telemetry (#36644)
Closes #36644

PiperOrigin-RevId: 636702732
2024-05-23 15:54:07 -07:00
Mark D. Roth
58a4b9c922 [reorg] move src/core/lib/gpr -> src/core/util (#36543)
Closes #36543

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36543 from markdroth:reorg_util_gpr ba84e186beb1ec50d09bcf91ebd16e88b8e225aa
PiperOrigin-RevId: 634113744
2024-05-15 16:32:20 -07:00
Craig Tiller
0ecee5ad3f [call-v3] Server path (#36509)
<!--

If you know who should review your pull request, please assign it to that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the appropriate
lang label.

-->

Closes #36509

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36509 from ctiller:transport-refs-3 2771a2b0e1b4af4c5622839a5a767388d13b1074
PiperOrigin-RevId: 633240374
2024-05-13 09:45:09 -07:00
AJ Heller
c0208416b6 Automated rollback of commit 82e5116fb0.
PiperOrigin-RevId: 632241053
2024-05-09 12:54:02 -07:00
Yash Tibrewal
87b71907d6 [Release] Bump version to 1.65.0-dev (on master branch) (#36544)
Change was created by the release automation script. See go/grpc-release.

Closes #36544

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36544 from yashykt:bump_dev_version_202405061956 69ee5c869efa544c0ce768792750720df9d11f07
PiperOrigin-RevId: 631187829
2024-05-06 14:41:36 -07:00
Mark D. Roth
32e03171e7 [reorg] move xds code to src/core/xds (#36521)
Also do some cleanup in CODEOWNERS.

Closes #36521

PiperOrigin-RevId: 631137895
2024-05-06 11:57:32 -07:00
Tanvi Jagtap
a20f020fb8 [grpc][Gpr_To_Absl_Logging] Migrating from gpr to absl logging GPR_ASSERT (#36468)
[grpc][Gpr_To_Absl_Logging] Migrating from gpr to absl logging GPR_ASSERT
Replacing GPR_ASSERT with absl CHECK.
These changes have been made using string replacement and regex.
Will not be replacing all instances of CHECK with CHECK_EQ , CHECK_NE etc because there are too many callsites. Only ones which are doable using very simple regex with least chance of failure will be replaced.
Given that we have 5000+ instances of GPR_ASSERT to edit, Doing it manually is too much work for both the author and reviewer.

<!--

If you know who should review your pull request, please assign it to that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the appropriate
lang label.

-->

Closes #36468

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36468 from tanvi-jagtap:tjagtap_src_core_lib_gprpp f7ed931db16acd609e851d75f546377661b2705f
PiperOrigin-RevId: 630978821
2024-05-06 02:39:25 -07:00
AJ Heller
773b851b74 Automated rollback of commit ffe73d230c.
PiperOrigin-RevId: 630550068
2024-05-03 18:30:39 -07:00
AJ Heller
82e5116fb0 Automated rollback of commit f45ac2c9e4.
PiperOrigin-RevId: 630539205
2024-05-03 17:30:40 -07:00
Hannah Shi
a0543d9328 [ObjC] Support visionos (#36476)
This should be able to unblock using grpc on vision os, will add tests later

Closes #36476

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36476 from HannahShiSFB:support-visionos edbde32d230560bbbb6cabfb21d90242cc40387d
PiperOrigin-RevId: 630173448
2024-05-02 14:09:56 -07:00
AJ Heller
ffe73d230c [fix] Make GRPC_VERBOSITY=debug work with abseil logging (#36501)
Closes #36501

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36501 from drfloob:make-debug-logging-work-again b5f81e4c394cfe957783e949ad73906933ea1a08
PiperOrigin-RevId: 630132023
2024-05-02 11:46:59 -07:00
AJ Heller
f45ac2c9e4 Reland: [surface] Add an API to inject connected endpoints into servers
PiperOrigin-RevId: 630095574
2024-05-02 10:00:02 -07:00
Tanvi Jagtap
9603942313 [grpc][Gpr_To_Absl_Logging] Migrating from gpr to absl logging GPR_ASSERT (#36467)
[grpc][Gpr_To_Absl_Logging] Migrating from gpr to absl logging GPR_ASSERT
Replacing GPR_ASSERT with absl CHECK.
These changes have been made using string replacement and regex.
Will not be replacing all instances of CHECK with CHECK_EQ , CHECK_NE etc because there are too many callsites. Only ones which are doable using very simple regex with least chance of failure will be replaced.
Given that we have 5000+ instances of GPR_ASSERT to edit, Doing it manually is too much work for both the author and reviewer.

<!--

If you know who should review your pull request, please assign it to that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the appropriate
lang label.

-->

Closes #36467

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36467 from tanvi-jagtap:tjagtap_src_core_lib 30d3ff5bbba3e60b2bd6b3961b6d46cbf375383f
PiperOrigin-RevId: 629995895
2024-05-02 02:25:39 -07:00
Mark D. Roth
1e5fc3df8b [reorg] move server code to src/core/server (#36475)
Closes #36475

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36475 from markdroth:reorg_server 30edc04c0ff20159a0d2726b4c791bba4cdd5fc0
PiperOrigin-RevId: 629776917
2024-05-01 11:16:02 -07:00
Craig Tiller
e614dafd89 [woah] Remove deadline filter (#36477)
Also begin to eliminate `CallContext` in favor of just exposing `Call` - ultimately there's not really a need to introduce two types here, so I'm going to wind that idea back over a few PRs.

I've avoided making this an experiment as the changes required were quite structural.

Closes #36477

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36477 from ctiller:deadline-time 9856eeebe67d2ee680c05ae5426e8c94dd4c4d1c
PiperOrigin-RevId: 629599230
2024-04-30 19:45:22 -07:00
Mark D. Roth
6e981d7460 [reorg] move handshaker code to src/core/handshaker (#36375)
Closes #36375

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36375 from markdroth:reorg_handshaker d1ed49f4df9e9901aa1bd2ef5eff337b352da59e
PiperOrigin-RevId: 629497065
2024-04-30 12:42:01 -07:00
Tanvi Jagtap
3890766adf [grpc][Gpr_To_Absl_Logging] Migrating from gpr to absl logging GPR_ASSERT (#36452)
[grpc][Gpr_To_Absl_Logging] Migrating from gpr to absl logging GPR_ASSERT
Replacing GPR_ASSERT with absl CHECK.
These changes have been made using string replacement and regex.
Will not be replacing all instances of CHECK with CHECK_EQ , CHECK_NE etc because there are too many callsites. Only ones which are doable using very simple regex with least chance of failure will be replaced.
Given that we have 5000+ instances of GPR_ASSERT to edit, Doing it manually is too much work for both the author and reviewer.

<!--

If you know who should review your pull request, please assign it to that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the appropriate
lang label.

-->

Closes #36452

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36452 from tanvi-jagtap:tjagtap_include_grpc 08e612fccdf817db8dfce268a26343a9595d0843
PiperOrigin-RevId: 628318595
2024-04-26 00:42:19 -07:00
Craig Tiller
d52779da52 [call-v3] Interception chain (#36414)
Introduce the interception chain type.
Also introduces the real call-v3 call spine based atop CallFilters.

Closes #36414

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36414 from ctiller:interception-chain 90c8e969738c1c999db7257c2c24aeb382818c70
PiperOrigin-RevId: 627784183
2024-04-24 11:03:13 -07:00
Mark D. Roth
08f56b3a74 [reorg] move channelz code to src/core/channelz (#36380)
Closes #36380

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36380 from markdroth:reorg_channelz f186e53f70819e3b780e566ab3089b2b9ed5fca1
PiperOrigin-RevId: 626447939
2024-04-19 13:05:23 -07:00
Hannah Shi
f6ee70289d [ObjC] Update abseil and boring ssl versions (#36356)
Update abseil and boring ssl versions

Closes #36356

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36356 from HannahShiSFB:update-pod-swift-dependencies dcf33c8824b128708fad064c7be32c1aba17f7ee
PiperOrigin-RevId: 626206584
2024-04-18 18:06:03 -07:00
gRPC Team Bot
6dc64db1a8 Automated rollback of commit f61049f641.
PiperOrigin-RevId: 626062841
2024-04-18 09:43:26 -07:00
AJ Heller
f61049f641 [surface] Reland: Add an API to inject connected endpoints into servers
PiperOrigin-RevId: 625837807
2024-04-17 16:17:51 -07:00
Yijie Ma
cd30592193 [release] Bump dev version 202404101721 (#36333)
<!--

If you know who should review your pull request, please assign it to that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the appropriate
lang label.

-->

Closes #36333

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36333 from yijiem:bump_dev_version_202404101721 0a7cc5b4b740688b81417ef2da8f93b4c027f3ed
PiperOrigin-RevId: 623878150
2024-04-11 11:04:35 -07:00
Esun Kim
34a7e76359 [Deps] Rollfoward Protobuf upgrade to v26.1 (#36323)
This reverts commit 78b9d84fd3.

Closes #36323

PiperOrigin-RevId: 623547891
2024-04-10 11:07:26 -07:00
AJ Heller
798399b984 Automated rollback of commit 7c57fb70e9.
PiperOrigin-RevId: 622990471
2024-04-08 17:03:32 -07:00