Commit Graph

1861 Commits

Author SHA1 Message Date
Tanvi Jagtap - Google LLC 2eecbcc8a3 [PH2] Fixing circular dependency (#40204)
[PH2] Fixing circular dependency

`Http2SettingsManager` needs `frame.h`.
Our new validation code in frame.h needs `Http2Settings`.
So we split `Http2Settings` and `Http2SettingsManager` into 2 separate header files to resolve the circular dependency.

Closes #40204

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/40204 from tanvi-jagtap:ph2_fixing_circular_dependency 17718955eb455aa8d20840d9d0a9a8712c63dd01
PiperOrigin-RevId: 783114803
2025-07-14 18:07:34 -07:00
Gregory Cooke f0da192d0e [auth] add injectable custom peer comparison fn (#39610)
Closes #39610

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39610 from gtcooke94:auth_context_compare f3194546062e31a4810918aa673c712c2bad8940
PiperOrigin-RevId: 780722699
2025-07-08 14:49:02 -07:00
Vignesh Babu 8d51dea38b Revert https://github.com/grpc/grpc/pull/39697 as it increase binary size of mobile builds
PiperOrigin-RevId: 780678045
2025-07-08 12:55:08 -07:00
Alisha Nanda 4806c33d8f Add experiment to pipeline secure endpoint reads so reading and unprotecting can occur in parallel.
PiperOrigin-RevId: 780258628
2025-07-07 14:23:40 -07:00
Vignesh Babu b38fc354e1 [FilterFusion] Define a build target containing fused filters and link this target into gRPC core (#39697)
Defines a new src/core:fused_filters containing registrations of fused filters and also makes changes to filter_fusion to ensure it compiles.

This PR enables registration of the fused filters under a new experiment.

Closes #39697

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39697 from Vignesh2208:fusing-filters 34303b21c162597d54a2fbe02fcd76eaa88f5150
PiperOrigin-RevId: 780146277
2025-07-07 09:41:50 -07:00
Esun Kim 58022c65ff [Release] Bump version to 1.75.0-dev (on master branch) (#40120)
Change was created by the release automation script. See go/grpc-release.

Closes #40120

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/40120 from veblush:bump_dev_version_202507041728 e403e80e566f334809e93e421d552d0b99076f68
PiperOrigin-RevId: 779336318
2025-07-04 18:59:21 -07:00
Rishesh Agarwal fa4a4b13b1 [API] add new API to create channel from fd or endpoint that supports… (#40017)
re-merging of the previous changes [#39400](https://github.com/grpc/grpc/pull/39400/files)

Closes #40017

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/40017 from rishesh007:create_secure_channel_from_fd 995879ac30a925d631531fb447ccab868e34bbbb
PiperOrigin-RevId: 778763055
2025-07-02 22:38:31 -07:00
Yash Tibrewal 2a5597f87f [deps] Update absl to 20250512.1 (#39571)
Update absl dependency to https://github.com/abseil/abseil-cpp/releases/tag/20250512.1

As part of this upgrade, remove gRPC's usage of internal absl helper functions.
A similar fix is needed for OpenCensus-Cpp, but since that repo is archived, I am choosing to add in a patch. The aim is to delete our OpenCensus plugin so that we don't have to maintain this forever as per https://github.com/grpc/proposal/pull/496.

Closes #39571

PiperOrigin-RevId: 777770232
2025-06-30 16:46:51 -07:00
Craig Tiller 4593cde0fe [channelz] Convert Promises to channelz properties rather than just JSON.
PiperOrigin-RevId: 777635907
2025-06-30 10:54:10 -07:00
Craig Tiller 65323f5b34 [channelz] Add framework to convert promises to proto
PiperOrigin-RevId: 777398087
2025-06-29 21:31:37 -07:00
Craig Tiller 670d540fdd [channelz] make PropertyList (&co) produce both json & proto (upb) representations
This will aid our transition from json --> proto

PiperOrigin-RevId: 776881234
2025-06-28 01:33:07 -07:00
Tanvi Jagtap - Google LLC 4233146214 [PH2] Fixing transport bugs for ping pong (#40013)
[PH2] Fixing transport bugs for ping pong
1. Ensuring that `"PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"` is the first thing to be written . Modifying our unit tests for the same.
2. Removing forced sending of the first settings frame. That is already taken care of by connector.
3. Fixing a wrong CHECK statement that was causing a crash.
4. Handling RST_STREAM being used even in non-error cases.

Closes #40013

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/40013 from tanvi-jagtap:ph2_fix_transport_for_ping_pong 7f3464f7014792e9605085f719e3b174114c12de
PiperOrigin-RevId: 776447114
2025-06-26 23:52:10 -07:00
Mark D. Roth dcb3ecd20e [xDS] add call creds registry and bootstrap plumbing for JWT token file call creds (#39772)
This is the second half of gRFC A97 (https://github.com/grpc/proposal/pull/492).

Closes #39772

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39772 from markdroth:jwt_token_call_creds2 727f7701a385ff5894914f747aea34793f97eb95
PiperOrigin-RevId: 776233709
2025-06-26 12:18:00 -07:00
Tanvi Jagtap - Google LLC 220cf657a2 [PH2] BUILD only changes so I can code in peace (#39931)
[PH2] BUILD only changes so I can code in peace

Closes #39931

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39931 from tanvi-jagtap:ph2_build_files_make_me_cry 67b897d8a2bd4076f70f19ea82a41531af9eb1df
PiperOrigin-RevId: 775550063
2025-06-24 23:58:17 -07:00
Yash Tibrewal 6af1994cbb [OTel C++, Posix EE] Plumb TCP write timestamps and metrics to OTel tracers (#39946)
Changes -
* Amends Posix EventEngine to support `EventEngine::Endpoint::WriteEventSink`, removing support for the old and currently unused void* method of propagating timestamps.
* Modernize TracedBufferList to use C++ style
* Add tests to make sure OTel tracers receive TCP events.

The following kinds of annotations are seen -
```
E0622 20:55:48.864268  169397 otel_client_call_tracer.cc:366] 2025-06-22T20:55:48.864224659+00:00 TCP: SENDMSG byte_offset=311 delivery_rate=1170285714, is_delivery_rate_app_limited=1, packet_retx=0, packet_spurious_retx=0, packet_sent=2, data_retx=0, data_sent=91, data_notsent=0, pacing_rate=15697245508, min_rtt=21, congestion_window=10, reordering=3, recurring_retrans=0, busy_usec=0, rwnd_limited_usec=0, sndbuf_limited_usec=0
E0622 20:55:48.864639  169405 otel_client_call_tracer.cc:366] 2025-06-22T20:55:48.864397339+00:00 TCP: SCHEDULED byte_offset=311 delivery_rate=1170285714, is_delivery_rate_app_limited=1, packet_retx=0, packet_spurious_retx=0, packet_sent=3, packet_delivered=3, packet_delivered_ce=0, data_retx=0, data_sent=415, data_notsent=324, pacing_rate=15697245508, min_rtt=21, srtt=41, congestion_window=10, snd_ssthresh=2147483647, reordering=3, recurring_retrans=0, busy_usec=0, rwnd_limited_usec=0, sndbuf_limited_usec=0
E0622 20:55:48.864828  169405 otel_client_call_tracer.cc:366] 2025-06-22T20:55:48.86440637+00:00 TCP: SENT byte_offset=311 delivery_rate=1170285714, is_delivery_rate_app_limited=1, packet_retx=0, packet_spurious_retx=0, packet_sent=3, packet_delivered=3, packet_delivered_ce=0, data_retx=0, data_sent=415, data_notsent=324, pacing_rate=15697245508, min_rtt=21, srtt=41, congestion_window=10, snd_ssthresh=2147483647, reordering=3, recurring_retrans=0, busy_usec=0, rwnd_limited_usec=0, sndbuf_limited_usec=0
E0622 20:55:48.865587  169397 otel_client_call_tracer.cc:366] 2025-06-22T20:55:48.86543777+00:00 TCP: ACKED byte_offset=311 delivery_rate=1170285714, is_delivery_rate_app_limited=1, packet_retx=0, packet_spurious_retx=0, packet_sent=3, packet_delivered=4, packet_delivered_ce=0, data_retx=0, data_sent=415, data_notsent=0, pacing_rate=15697245508, min_rtt=21, srtt=41, congestion_window=10, snd_ssthresh=2147483647, reordering=3, recurring_retrans=0, busy_usec=0, rwnd_limited_usec=0, sndbuf_limited_usec=0
```

Closes #39946

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39946 from yashykt:EEPosixWritSink 96ea734c290e81a88d7d0c81c767ff354d1b9f7f
PiperOrigin-RevId: 775515293
2025-06-24 22:05:47 -07:00
Craig Tiller 5b64db30a1 [channelz] Add basic serialization to protobuf
PiperOrigin-RevId: 774618382
2025-06-22 22:29:45 -07:00
Adam Heller d0b040f4c7 [iomgr] Delete unused python_util.h (#39944)
Closes #39944

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39944 from drfloob:rm-iomgr-python_util 3d1095f87b973e72b4036944d5eb2b7eb2dc9ac0
PiperOrigin-RevId: 773816589
2025-06-20 13:13:54 -07:00
Rishesh Agarwal a78f6964a2 Automated rollback of commit 0640791c12.
PiperOrigin-RevId: 773308711
2025-06-19 05:18:46 -07:00
Rishesh Agarwal 0640791c12 [API] add new API to create channel from fd or endpoint that supports secure credentials (#39400)
Changes for [go/grpcpp-secure-channel-from-fd](http://goto.google.com/grpcpp-secure-channel-from-fd)

Closes #39400

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39400 from rishesh007:create_secure_channel_from_fd dfe0920812937e7a0320626beeca17e3e450f4da
PiperOrigin-RevId: 773200033
2025-06-18 22:41:38 -07:00
Mark D. Roth 7c4d5e8d70 [xDS] implement JWT token file call credentials (#39769)
This is the first part of implementing gRFC A97 (https://github.com/grpc/proposal/pull/492).

Closes #39769

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39769 from markdroth:jwt_token_call_creds fd890a3222249336c8ca69ee682dc70828cb2248
PiperOrigin-RevId: 772533750
2025-06-17 10:43:53 -07:00
Craig Tiller 2687745dd5 [channelz] Property list: Separate out value conversion from property setting
This will allow open extensibility of the set of types available for property list (we no longer need to add them to the PropertyList type itself), and allow for other shaped types to do the same set of conversions.

PiperOrigin-RevId: 772039595
2025-06-16 08:45:17 -07:00
Craig Tiller c64ff98c81 [channelz] Add a property list type (#39807)
Starting towards a transition to channelz-v2 - I'm adding this and probably some more container types for variously shaped generic output mechanisms.

The final protobufs we use will be a combination of structures that can back this and structures that are tuned specifically for various subsystems that don't represent cleanly here.

As soon as is practicable I'll be removing the JSON backing and transitioning everything to be implemented directly atop protobufs, and having shims such as this in place will greatly help that effort.

Closes #39807

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39807 from ctiller:plist 24928963d72422c0a21712f3e2e91ffe5640e457
PiperOrigin-RevId: 771317541
2025-06-13 20:13:05 -07:00
Adam Heller d589dc2d44 [util] Add leak checking to WaitForSingleOwner (#39801)
Closes #39801

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39801 from drfloob:check-leaks-on-ee-wait-for-1p b5eac04eaa7afcf5ab7852e6023569276274610b
PiperOrigin-RevId: 769662961
2025-06-10 09:26:01 -07:00
Yash Tibrewal 00be47428c [EventEngine] Add explicit destruction of deprecated google specific pointer to avoid memory leaks
PiperOrigin-RevId: 769329686
2025-06-09 16:04:17 -07:00
Vignesh Babu 53bc6c6440 [telemetry] Re-land https://github.com/grpc/grpc/pull/39530
PiperOrigin-RevId: 767711712
2025-06-05 12:17:24 -07:00
Eugene Ostroukhov cad1d0eef7 [event_engine] Event engine fork support (#38980)
Closes #38980

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38980 from eugeneo:fork/11-can-tests-pass e17cafed76c0068029c666f260d59f9d7dd50dd5
PiperOrigin-RevId: 766759188
2025-06-03 11:53:50 -07:00
Craig Tiller 2524868729 [util] Add a function to return the memory usage of a type (#39701)
Ok, so very deep template magicks... but... actually not terribly bad to read either?

Adds a function `MemoryUsage(x)` that returns some reasonable approximation of the memory used by `x`.

Understands a bunch of types we use, and has an escape hatch for adding custom behavior for other types.

Super usefully, it knows how to take:

```
struct Foo { X x; Y y; };
```

and decompose `MemoryUsage(Foo{a,b});` into `MemoryUsage(a) + MemoryUsage(b) + struct_padding_in_foo`

... this change also includes modifications to ztrace to use it in anger to demonstrate that the system works.

Closes #39701

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39701 from ctiller:memory-usage 0b14aa6f9ea3757443a6d14b7f968e9868e3365a
PiperOrigin-RevId: 765257120
2025-05-30 11:02:23 -07:00
Yash Tibrewal 0e54ed66b5 [Release] Bump version to 1.74.0-dev (on master branch) (#39614)
Change was created by the release automation script. See go/grpc-release.

Closes #39614

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39614 from yashykt:bump_dev_version_202505211516 89b3566bfa45e56bc555a70f9a61832ba26274d5
PiperOrigin-RevId: 762218178
2025-05-22 19:15:53 -07:00
Adam Heller 5b9404f698 [EventEngine][iomgr] Re-land: Delete Executor (#39578)
This rolls forward the Executor removal PR, with use-after-free fixes for the iomgr native resolver. See https://github.com/grpc/grpc/pull/39422 for the original landing

Closes #39578

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39578 from drfloob:fix20250515 df648f59a004e723e942773ec2030b14965d2d3c
PiperOrigin-RevId: 761119402
2025-05-20 09:45:21 -07:00
ac-patel 60436753f7 [PH2][Ping] Add transport ping usage (#39399)
This PR adds ping functionality to the client transport.

Closes #39399

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39399 from ac-patel:ping_usage 7f4a4a4e9722702c867845970776dab86663539e
PiperOrigin-RevId: 760605950
2025-05-19 06:50:18 -07:00
Craig Tiller fbce37dd3e [promises] Add Promise --> JSON conversion facility (#39580)
Just the genesis for the moment... but we'll extend this for all combinators to get introspection of state, and then make this available for all promise combinators.

Closes #39580

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39580 from ctiller:jsonp ccd76b74375c12331b8a079c95e417a9a94b33ff
PiperOrigin-RevId: 759436377
2025-05-15 21:39:58 -07:00
gRPC Team Bot a3a4448a3a Automated rollback of commit 2911f07b19.
PiperOrigin-RevId: 759169781
2025-05-15 09:03:29 -07:00
Vignesh Babu 788e5340b3 Automated rollback of commit 4a186266fd.
PiperOrigin-RevId: 758903258
2025-05-14 17:50:34 -07:00
Adam Heller 2911f07b19 [EventEngine][iomgr] Delete Executor (#39422)
This removes the last remaining uses of the iomgr Executor, and replaces all references to it in the documentation.

Closes #39422

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39422 from drfloob:rm-executor 3ff8c54df71a009c48279c8442512ef9d98212c6
PiperOrigin-RevId: 758890190
2025-05-14 17:05:42 -07:00
Vignesh Babu 4a186266fd [telemetry] Change the schema of the stats_data definitions to better handle scoped metrics
PiperOrigin-RevId: 758840524
2025-05-14 14:44:08 -07:00
Yash Tibrewal 708b5c0615 [TcpWriteEvent] Propagate events to otel plugin (#39552)
Closes #39552

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39552 from yashykt:FathomPlumbing 617dfab7dc8fad1b331574b8671545e149bcbf66
PiperOrigin-RevId: 758822356
2025-05-14 13:59:08 -07:00
Esun Kim b98b101153 [Deps] Updated abseil to 20250127.1 (#38664)
Closes #38664

PiperOrigin-RevId: 755978662
2025-05-07 13:19:40 -07:00
Yash Tibrewal 58ee0f1e20 [BoringSSL] Upgrade boringssl (#39493)
Upgrade boringSSL to https://github.com/google/boringssl/commit/c63fadbde60a2224c22189d14c4001bbd2a3a629

Autogeneration was failing, and hence upgraded manually. Note the fix in [tools/distrib/generate_boringssl_prefix_header.sh](https://github.com/grpc/grpc/compare/master...yashykt:grpc:UpgradeBoringssl?expand=1#diff-5b31518f3f16b92a52e61c944074fd2a25418864480ec157bdfe668807385617)

Closes #39493

PiperOrigin-RevId: 755491360
2025-05-06 13:09:45 -07:00
Craig Tiller 48b9c531c5 [chaotic-good] Enable encrypted links (#39427)
This is not at the point where it's "secure" yet, but we can perform a handshake and get encrypted data.

Closes #39427

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39427 from ctiller:seccg2 9742a47a96b438e49eb885f0cb5c80e7eb0fb02b
PiperOrigin-RevId: 753380790
2025-04-30 17:58:45 -07:00
Craig Tiller 7b5bd397a6 [channelz] Shard indices (#39306)
Previously channelz kept an index of all objects in a global std::map protected by a single mutex.

Instead: split the index in two. The first is a list of all base nodes, queryable on demand, sharded by pointer. These base nodes are available, but un-numbered. The id allocation then occurs whenever channelz is actually queried. At that point unnumbered nodes can be iterated and numbered sequentially, keeping that essential invariant for channelz pagination.

In doing so, most nodes never need to hit a singleton global resource at all: the most they do is take a sharded lock and do a list insert/removal pair.

(it turns out this code is a major source of contention in gRPC)

Closes #39306

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39306 from ctiller:counting-on-it a7a04c33a6818f6be5c211477a19798ffe78bf18
PiperOrigin-RevId: 750342301
2025-04-22 15:12:18 -07:00
Craig Tiller f40bbaa7fc Event Engine write metrics
Sketched out an approach to customizable write metrics we discussed last week

In a nutshell:
- endpoints can advertise a set of metrics they provide (in our discussions we used a Span here, I realized during implementation I'd like wrapped endpoints to be able to extend this set, and so using a vector instead)
- endpoints also supply name and id queries for said metrics
- users of the api can request a set of events to callback on, and a set of metrics they're interested in, and a callback will be made when those events are ready with the set of metrics requested

PiperOrigin-RevId: 748559193
2025-04-16 23:23:35 -07:00
Craig Tiller 7f0d75389e [shared-bit-gen] Stop using inline static (#39260)
Possibly avoid Ruby binding mis-compile

Closes #39260

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39260 from ctiller:sbg b498fce65b5213b9fd09ca4cdfb224fa5633de77
PiperOrigin-RevId: 748549370
2025-04-16 22:44:35 -07:00
Craig Tiller 740423b4ec [transport] Add hooks to choose between transports (#39252)
<!--

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 #39252

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39252 from ctiller:secure-cg 93dc2f6d0e57ed359798d9572e289b7563bb1b50
PiperOrigin-RevId: 748530614
2025-04-16 21:32:21 -07:00
Craig Tiller 8a75a7a185 Automated rollback of commit 20901a4102.
PiperOrigin-RevId: 748420944
2025-04-16 14:18:22 -07:00
Craig Tiller 20901a4102 Automated rollback of commit 92fb814b17.
PiperOrigin-RevId: 748307993
2025-04-16 08:48:47 -07:00
Craig Tiller 92fb814b17 [cleanup] Use new SharedBitGen in lots of places (#39254)
Now that we have this, use it wherever it makes sense to reduce per-channel memory usage.

Closes #39254

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39254 from ctiller:bitgen 3622ca0d99a62d93caef0f9cd952675e75d7dc7f
PiperOrigin-RevId: 747960932
2025-04-15 11:47:26 -07:00
Craig Tiller 143e647eb6 [telemetry] Move ContextList type for RPC traces out of chttp2 (#39213)
We'll need this type for telemetry for all transports.

It's likely we need to move this again in a week or so, but for now this spot makes sense.

Closes #39213

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39213 from ctiller:rename 67a134cfbbc973d7046cc248f6e709e6eacd7230
PiperOrigin-RevId: 747724831
2025-04-14 23:08:44 -07:00
Yousuk Seung 1c0280ac7c [channelz] Extension to export event engine endpoint info to channelz
PiperOrigin-RevId: 746887266
2025-04-12 14:19:48 -07:00
Craig Tiller e31434c6a6 [channelz] HTTP/2 ztrace facility (#39189)
<!--

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 #39189

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39189 from ctiller:http2-trace 547f78604124cc3005fbee6098487a2110afb926
PiperOrigin-RevId: 746174350
2025-04-10 14:28:47 -07:00
Craig Tiller 210bd3b9a5 [event-engine] Secure Endpoint implementation (#39197)
EventEngine based secure endpoint implementation.

There's several shortcuts here to get something up quickly:
* a "legacy" implementation is preserved in legacy_secure_endpoint.cc - this version is verbatim copied from current code, and is used whenever the experiment is disabled. Doing so makes this change relatively safe.
* The new implementation contains two variants that share their protection engines: one that wraps an old `grpc_endpoint`, another that wraps an `EventEngine::Endpoint`. The latter is what we'll converge on - and at that point significant implementation cleanup will be possible.

The three implementations together give us a safe deployment story, and one that's maximally orthogonal to other experiments rollout.

Closes #39197

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39197 from ctiller:SEC 8fc0fe631086d6a351a68bcd03f5bda70732044d
PiperOrigin-RevId: 745779620
2025-04-09 16:39:02 -07:00