[promises+event_engine] Re-enable promise_based_client_call testing (#35678)

The client promise code seems to cause a problem with iomgr pollset shutdown which is causing flakiness.

Right now I don't think it's likely that we'll get this code rolled out before the event engine client lands, so I'm making the experiment dependent on event engine polling.

Closes #35678

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/35678 from ctiller:flake 4512fa81b0
PiperOrigin-RevId: 601926443
pull/35679/head
Craig Tiller 1 year ago committed by Copybara-Service
parent 2bb10be729
commit 5b444972f3
  1. 14
      bazel/experiments.bzl
  2. 18
      src/core/lib/experiments/experiments.cc
  3. 1
      src/core/lib/experiments/experiments.yaml
  4. 2
      src/core/lib/experiments/rollouts.yaml

@ -33,7 +33,7 @@ EXPERIMENT_ENABLES = {
"peer_state_based_framing": "peer_state_based_framing",
"pending_queue_cap": "pending_queue_cap",
"pick_first_happy_eyeballs": "pick_first_happy_eyeballs",
"promise_based_client_call": "promise_based_client_call",
"promise_based_client_call": "event_engine_client,event_engine_listener,promise_based_client_call",
"promise_based_server_call": "promise_based_server_call",
"registered_method_lookup_in_transport": "registered_method_lookup_in_transport",
"promise_based_inproc_transport": "promise_based_client_call,promise_based_inproc_transport,promise_based_server_call,registered_method_lookup_in_transport",
@ -76,6 +76,7 @@ EXPERIMENTS = {
"v3_compression_filter",
],
"core_end2end_test": [
"promise_based_client_call",
"promise_based_server_call",
"work_serializer_dispatch",
],
@ -94,6 +95,9 @@ EXPERIMENTS = {
"tcp_frame_size_tuning",
"tcp_rcv_lowat",
],
"lame_client_test": [
"promise_based_client_call",
],
"lb_unit_test": [
"work_serializer_dispatch",
],
@ -151,6 +155,7 @@ EXPERIMENTS = {
"v3_compression_filter",
],
"core_end2end_test": [
"promise_based_client_call",
"promise_based_server_call",
"work_serializer_dispatch",
],
@ -169,6 +174,9 @@ EXPERIMENTS = {
"tcp_frame_size_tuning",
"tcp_rcv_lowat",
],
"lame_client_test": [
"promise_based_client_call",
],
"lb_unit_test": [
"work_serializer_dispatch",
],
@ -223,6 +231,7 @@ EXPERIMENTS = {
"v3_compression_filter",
],
"core_end2end_test": [
"promise_based_client_call",
"promise_based_server_call",
"work_serializer_dispatch",
],
@ -241,6 +250,9 @@ EXPERIMENTS = {
"tcp_frame_size_tuning",
"tcp_rcv_lowat",
],
"lame_client_test": [
"promise_based_client_call",
],
"lb_unit_test": [
"work_serializer_dispatch",
],

@ -86,6 +86,9 @@ const char* const description_promise_based_client_call =
"If set, use the new gRPC promise based call code when it's appropriate "
"(ie when all filters in a stack are promise based)";
const char* const additional_constraints_promise_based_client_call = "{}";
const uint8_t required_experiments_promise_based_client_call[] = {
static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
const char* const description_promise_based_server_call =
"If set, use the new gRPC promise based call code when it's appropriate "
"(ie when all filters in a stack are promise based)";
@ -219,7 +222,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
{"pick_first_happy_eyeballs", description_pick_first_happy_eyeballs,
additional_constraints_pick_first_happy_eyeballs, nullptr, 0, true, true},
{"promise_based_client_call", description_promise_based_client_call,
additional_constraints_promise_based_client_call, nullptr, 0, false, true},
additional_constraints_promise_based_client_call,
required_experiments_promise_based_client_call, 2, false, true},
{"promise_based_server_call", description_promise_based_server_call,
additional_constraints_promise_based_server_call, nullptr, 0, false, true},
{"registered_method_lookup_in_transport",
@ -346,6 +350,9 @@ const char* const description_promise_based_client_call =
"If set, use the new gRPC promise based call code when it's appropriate "
"(ie when all filters in a stack are promise based)";
const char* const additional_constraints_promise_based_client_call = "{}";
const uint8_t required_experiments_promise_based_client_call[] = {
static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
const char* const description_promise_based_server_call =
"If set, use the new gRPC promise based call code when it's appropriate "
"(ie when all filters in a stack are promise based)";
@ -479,7 +486,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
{"pick_first_happy_eyeballs", description_pick_first_happy_eyeballs,
additional_constraints_pick_first_happy_eyeballs, nullptr, 0, true, true},
{"promise_based_client_call", description_promise_based_client_call,
additional_constraints_promise_based_client_call, nullptr, 0, false, true},
additional_constraints_promise_based_client_call,
required_experiments_promise_based_client_call, 2, false, true},
{"promise_based_server_call", description_promise_based_server_call,
additional_constraints_promise_based_server_call, nullptr, 0, false, true},
{"registered_method_lookup_in_transport",
@ -606,6 +614,9 @@ const char* const description_promise_based_client_call =
"If set, use the new gRPC promise based call code when it's appropriate "
"(ie when all filters in a stack are promise based)";
const char* const additional_constraints_promise_based_client_call = "{}";
const uint8_t required_experiments_promise_based_client_call[] = {
static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
const char* const description_promise_based_server_call =
"If set, use the new gRPC promise based call code when it's appropriate "
"(ie when all filters in a stack are promise based)";
@ -739,7 +750,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
{"pick_first_happy_eyeballs", description_pick_first_happy_eyeballs,
additional_constraints_pick_first_happy_eyeballs, nullptr, 0, true, true},
{"promise_based_client_call", description_promise_based_client_call,
additional_constraints_promise_based_client_call, nullptr, 0, false, true},
additional_constraints_promise_based_client_call,
required_experiments_promise_based_client_call, 2, false, true},
{"promise_based_server_call", description_promise_based_server_call,
additional_constraints_promise_based_server_call, nullptr, 0, false, true},
{"registered_method_lookup_in_transport",

@ -156,6 +156,7 @@
expiry: 2024/06/14
owner: ctiller@google.com
test_tags: ["core_end2end_test", "lame_client_test"]
requires: ["event_engine_listener", "event_engine_client"]
- name: promise_based_inproc_transport
description:
Use promises for the in-process transport.

@ -87,7 +87,7 @@
- name: pick_first_happy_eyeballs
default: true
- name: promise_based_client_call
default: broken
default: false
- name: promise_based_server_call
default: false
- name: registered_method_lookup_in_transport

Loading…
Cancel
Save