[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
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
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
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
[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
[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
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
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
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
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
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
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
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
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
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
<!--
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
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
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
<!--
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
While testing the `event_engine_dns_non_client_channel` experiment, fuzzers would get stuck when adding a port to a server. The chttp2 server performs a blocking DNS lookup, leveraging a utility function that starts an async DNS resolution request, synchronizes threads via a Notification in the `on_resolve` callback, and waits for the response callback to be executed. In the single-threaded fuzzer environments, where a thread must explicitly "tick" the FuzzingEventEngine for timers to be fired & async execution to occur, a blocking DNS lookup hung the process.
This PR adds a query extension that allows an EventEngine implementation to support blocking DNS lookups. The FuzzingEventEngine now performs a blocking lookup without the need for an external thread to drive its progress.
Closes#39152
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39152 from drfloob:blocking-ee-dns-extension 20e478764d02383c7c8551f657a8133fcf6b062f
PiperOrigin-RevId: 745229590
Change was created by the release automation script. See go/grpc-release.
Closes#39161
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39161 from XuanWang-Amos:bump_dev_version_202504041546 b481e8b65b4bd8fd25d4c966eb1e13c4798f2e43
PiperOrigin-RevId: 744818540
[PH2][Transport][Error] Http2 Error codes - Part 1
This only has changes to BUILD files.
Doing this mid week becomes difficult because of constant merge conflicts with other changes to build files.
Closes#39120
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39120 from tanvi-jagtap:ph2_error_codes 74b82554a36baaa63df2e16dcae87ef864de1ad7
PiperOrigin-RevId: 743416350
The shims assumed that the default engine was a WindowsEventEngine instance. This failed as soon as a new non-trivial custom engine was tested on Windows. This was found as part of @yijiem 's work with a custom test-only DNS resolver.
Closes#39051
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/39051 from drfloob:fix-win-ee-shim-casts 06a7bee4906b2b7eeba6a5f848cc79196e6a2520
PiperOrigin-RevId: 740086607
This moves files from various locations to their new home in src/core/call.
Closes#38888
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38888 from markdroth:reorg_call fec9f5b1b0cecf02726b235fb86416e857404ad3
PiperOrigin-RevId: 735853779