This reverts commit a7a650a74e.
Original PR breaks #38286 and I think the breakage is in the PR -- in a construct like:
```
TrySeq(
/*a*/ []() -> Promise<absl::Status>,
/*b*/ []() -> Promise<StatusFlag>,
/*c*/ []() -> Promise<absl::Status>)
```
the original seq_state code would try to promote the intermediate `StatusFlag` to an `absl::Status` which is great - however with the optimization, if `b` is instantaneous we try to demote the result of `a` to `StatusFlag`, losing information.
I'll need to consider how to change this optimization to preserve the final output type before rolling forward.
Closes#38748
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38748 from ctiller:rb1 743eb33bdf
PiperOrigin-RevId: 727109120
I made seqs/joins copyable a while ago in anticipation of a nice optimization -- that didn't pan out.
Having them copyable makes it more likely that `Loop` will accept them and try to turn them from promises into the promise factory that it expects, copying the insides... *which is usually wrong* and incredibly frustrating to debug.
Closes#38744
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38744 from ctiller:promising e7a0e8d0bb
PiperOrigin-RevId: 727006243
If we don't have a configuration on some platform we should just not run the test, instead of crashing on a nullptr dereference.
Closes#38746
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38746 from ctiller:wtfbill ff91f21eb3
PiperOrigin-RevId: 726989196
<!--
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#38739
PiperOrigin-RevId: 726671784
We can't put a uint32 into a C-style enum, so clamp the input from the fuzzer to an acceptable range.
Closes#38738
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38738 from ctiller:api1 47b5c15238
PiperOrigin-RevId: 726668594
Increasingly as we write sequences, we find ourselves writing some asynchronous parts interleaved with some synchronous parts. This PR seeks to provide a basic optimizer for sequences - it detects immediate returning promises (by the lack of a `Poll<T>` return type), and eliminates the state machinery required to evaluate them at compile time.
Closes#38445
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38445 from ctiller:optseq 81c5025d76
PiperOrigin-RevId: 726641700
Fix several bugs that all contributed to this test failing:
1. a set of overflow/underflow conditions in fuzzing event engine if no timers were set
2. gigabytes of payload being presented to a fuzzer causing it to time out
3. the server fuzzer not cancelling calls, leading to some calls being stuck during an invalid shutdown sequence
4. a bug in chaotic good whereby a call could get stuck writing a payload forever
Additionally, I took the time to improve the debug-ability of stuck reads in fuzzing event engine somewhat - since that was a frustrating experience in looking at this.
Closes#38712
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38712 from ctiller:f1 c818031d1c
PiperOrigin-RevId: 726634838
If we enable the tracer `promise_primitives` during this test we end up dereferencing a nullptr.
Closes#38735
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38735 from ctiller:bugz 3e39895b57
PiperOrigin-RevId: 726611040
The bug was triggered in a fairly rare sequence of events: the subchannel needed to report TRANSIENT_FAILURE as its initial state but then be in IDLE state by the time that Happy Eyeballs got to it. Because we had recorded that the subchannel already saw TRANSIENT_FAILURE state before Happy Eyeballs got to it, it was not considered a new failure, which broke the logic we use to trigger exiting from the initial Happy Eyeballs pass and continue connecting. The fix is to not record that the subchannel saw TRANSIENT_FAILURE state until we get to it in the Happy Eyeballs pass.
b/394267714
Closes#38714
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38714 from markdroth:pick_first_happy_eyeballs_bugfix 97eb11f9ef
PiperOrigin-RevId: 726236599
This file does not have any parameterization, therefore does not need to be a template.
Closes#38688
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38688 from ctiller:composer f43cc29799
PiperOrigin-RevId: 726099566
It turned out that gRPC doesn't need to include `google/protobuf/compiler/php/php_generator.h`. Rather including `google/protobuf/compiler/php/names.h` (which is a smaller one) should be sufficient.
Closes#38718
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38718 from veblush:php-gen 671aa573e2
PiperOrigin-RevId: 725818983
This library would be a huge improvement for gRPC tests that deal with absl::Status and absl::StatusOr objects.
Closes#38709
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38709 from eugeneo:build/status_matchers 2a5bd89612
PiperOrigin-RevId: 725775867
An experiment was conducted over the past few months to bypass the ApplicationCallbackExecCtx, instead running all application callbacks on an EventEngine. The rollout is completing ~today (2025-01-13). After another week or so without issues, this PR can be merged to delete the ApplicationCallbackExecCtx.
Closes#38444
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38444 from drfloob:rm-acec 79a6047af0
PiperOrigin-RevId: 725691141
Also remove some unnecessary includes of port_platform.h, which have not been necessary since #36234.
Closes#38700
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38700 from markdroth:xds_down_cast 002ffd4fbe
PiperOrigin-RevId: 724446450
With the Bazel build transitioning to BzlMod, all vendored Bazel Python targets must be removed. These targets are not available in the BCR and need be managed via a pip `requirements.bazel.txt` file. gRPC already uses this approach, so it is going to be extended to include those target. (e.g. see [test utils](e06ad82c3f/test/cpp/naming/utils/BUILD (L27-L45)) to understand how those targets are used)
Additionally, the generation of the `requirements.bazel.lock` file has been improved. Because this file is a lock file, including all transitive dependencies, manual maintenance is not managable. Its new source file, `requirements.bazel.txt` is created to list only the direct dependencies used by gRPC, along with instructions for generating the full lock file. This source file omits specific version requirements to use the latest available versions, but version constraints can be added as needed.
Closes#38692
PiperOrigin-RevId: 724427578
gRPC stopped supporting VS2019 so all artifacts need to be built with VS2022 on Windows.
Closes#38697
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38697 from veblush:win-vs170 bed7a42f9f
PiperOrigin-RevId: 724368810
Aligned with the minimum supported Python version. Changes:
- Removed python 3.7 installed from `python_debian11_default_x64` docker image.
- Deleted `python_36.include` and `python_37.include` template files as they're no longer needed.
- Upgraded Python from 3.7 to 3.11 in `sanity` docker image.
- Some Python modules were modified to accomodate this
- Updated `buildifier` to v8.0.0 to have the same version that the CI tests use.
- Python 3.11 is the system default, but Python 3.7 remains installed for `pytype` and `pylint` that cannot be upgraded yet.
Closes#38693
PiperOrigin-RevId: 724071015
In addition to the regular upgrade, it's now possible to have the same version for both bazel workspace and module.
Closes#38661
PiperOrigin-RevId: 723994678
A few changes to improve bzlmod
- Added development dependencies (see [bazel_dep](https://bazel.build/rules/lib/globals/module#bazel_dep)) which are used only when developing gRPC.
- Added more tests to `bazel_build_with_bzlmod_linux.sh`
- Added all root target except `grpcpp_csm_observability` which is not possible at this point.
- Added building `examples/cpp` test.
- Added a few basic test run test.
Closes#38686
PiperOrigin-RevId: 723649629
Workaround for some users that cannot yet enabled the EventEngine client & listener experiments.
Closes#38689
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38689 from drfloob:quick 0479dfcc99
PiperOrigin-RevId: 723583125
The only change relative to the previous update is the addition of dualstack backend support in 1.12.0. I also added server support without the security changes in 1.11.0, but there isn't a separate table entry for that.
Closes#38266
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38266 from murgatroid99:xds_features_node_update_1.12.0 655876daf8
PiperOrigin-RevId: 723552436
A few changes to address comments from https://github.com/bazelbuild/bazel-central-registry/pull/3671
- Reintroduced a few more dependencies in the gRPC Bazel modules since those turned out to be required for some public gRPC targets (e.g. `googletest` is needed for `grpc++_test`)
- Removed `google_cloud_cpp` from the dependency as it's not yet registered to BCR and using it sometimes causes strange problems.
- Added a few public Bazel targets to `bazel_build_with_bzlmod_linux.sh` to make sure those are actually buildable.
Following-up of https://github.com/grpc/grpc/pull/38626Closes#38675
PiperOrigin-RevId: 723192505
In proto we can add deprecated option in service definition
example:
```
service Greeter {
option deprecated = true;
```
This PR help in translating this to marking generated service class as deprecated (which enables warning while using)
`class [[deprecated]] Greeter final {`
Sample warning
```
/usr/local/google/home/bpawan/workspace/code/grpc/examples/cpp/helloworld/greeter_async_client.cc:104:28: warning: 'Greeter' is deprecated [-Wdeprecated-declarations]
104 | std::unique_ptr<Greeter::Stub> stub_;
```
Encapsulated support with compiler flag "allow_deprecated" which will be by default false . Hence will not be impacted existing users
Closes#38493
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38493 from pawbhard:deprecated-support bd143e37ac
PiperOrigin-RevId: 723134226
<!--
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#38673
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38673 from ctiller:no-trace 1bfc1b6c2c
PiperOrigin-RevId: 722826986
Maybe in some of these cases, `{}` would work instead of `std::pair`, but I'm just doing a simple find and replace here.
Closes#38636
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38636 from yashykt:NoMakePair d819f6a74b
PiperOrigin-RevId: 722772621