|
|
|
@ -24,10 +24,6 @@ |
|
|
|
|
|
|
|
|
|
#if defined(GRPC_CFSTREAM) |
|
|
|
|
namespace { |
|
|
|
|
const char* const description_block_excessive_requests_before_settings_ack = |
|
|
|
|
"If set, block excessive requests before receiving SETTINGS ACK."; |
|
|
|
|
const char* const |
|
|
|
|
additional_constraints_block_excessive_requests_before_settings_ack = "{}"; |
|
|
|
|
const char* const description_call_status_override_on_cancellation = |
|
|
|
|
"Avoid overriding call status of successfully finished calls if it races " |
|
|
|
|
"with cancellation."; |
|
|
|
@ -41,21 +37,6 @@ const char* const description_client_idleness = |
|
|
|
|
const char* const additional_constraints_client_idleness = "{}"; |
|
|
|
|
const char* const description_client_privacy = "If set, client privacy"; |
|
|
|
|
const char* const additional_constraints_client_privacy = "{}"; |
|
|
|
|
const char* const description_combiner_offload_to_event_engine = |
|
|
|
|
"Offload Combiner work onto the EventEngine instead of the Executor."; |
|
|
|
|
const char* const additional_constraints_combiner_offload_to_event_engine = |
|
|
|
|
"{}"; |
|
|
|
|
const char* const description_chttp2_batch_requests = |
|
|
|
|
"Cap the number of requests received by one transport read prior to " |
|
|
|
|
"offload."; |
|
|
|
|
const char* const additional_constraints_chttp2_batch_requests = "{}"; |
|
|
|
|
const uint8_t required_experiments_chttp2_batch_requests[] = { |
|
|
|
|
static_cast<uint8_t>(grpc_core::kExperimentIdCombinerOffloadToEventEngine)}; |
|
|
|
|
const char* const description_chttp2_offload_on_rst_stream = |
|
|
|
|
"Offload work on RST_STREAM."; |
|
|
|
|
const char* const additional_constraints_chttp2_offload_on_rst_stream = "{}"; |
|
|
|
|
const uint8_t required_experiments_chttp2_offload_on_rst_stream[] = { |
|
|
|
|
static_cast<uint8_t>(grpc_core::kExperimentIdCombinerOffloadToEventEngine)}; |
|
|
|
|
const char* const description_event_engine_client = |
|
|
|
|
"Use EventEngine clients instead of iomgr's grpc_tcp_client"; |
|
|
|
|
const char* const additional_constraints_event_engine_client = "{}"; |
|
|
|
@ -79,10 +60,6 @@ const char* const description_keepalive_server_fix = |
|
|
|
|
"Allows overriding keepalive_permit_without_calls for servers. Refer " |
|
|
|
|
"https://github.com/grpc/grpc/pull/33917 for more information."; |
|
|
|
|
const char* const additional_constraints_keepalive_server_fix = "{}"; |
|
|
|
|
const char* const description_lazier_stream_updates = |
|
|
|
|
"Allow streams to consume up to 50% of the incoming window before we force " |
|
|
|
|
"send a flow control update."; |
|
|
|
|
const char* const additional_constraints_lazier_stream_updates = "{}"; |
|
|
|
|
const char* const description_memory_pressure_controller = |
|
|
|
|
"New memory pressure controller"; |
|
|
|
|
const char* const additional_constraints_memory_pressure_controller = "{}"; |
|
|
|
@ -112,10 +89,6 @@ const char* const additional_constraints_pending_queue_cap = "{}"; |
|
|
|
|
const char* const description_pick_first_happy_eyeballs = |
|
|
|
|
"Use Happy Eyeballs in pick_first."; |
|
|
|
|
const char* const additional_constraints_pick_first_happy_eyeballs = "{}"; |
|
|
|
|
const char* const description_ping_on_rst_stream = |
|
|
|
|
"Send a ping on receiving some RST_STREAM frames on the server (proportion " |
|
|
|
|
"configurable via grpc.http2.ping_on_rst_stream_percent channel arg)."; |
|
|
|
|
const char* const additional_constraints_ping_on_rst_stream = "{}"; |
|
|
|
|
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)"; |
|
|
|
@ -127,8 +100,6 @@ 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)"; |
|
|
|
|
const char* const additional_constraints_promise_based_server_call = "{}"; |
|
|
|
|
const uint8_t required_experiments_promise_based_server_call[] = { |
|
|
|
|
static_cast<uint8_t>(grpc_core::kExperimentIdLazierStreamUpdates)}; |
|
|
|
|
const char* const description_red_max_concurrent_streams = |
|
|
|
|
"Perform random early rejection of requests that would exceed a newly " |
|
|
|
|
"reduced MAX_CONCURRENT_STREAMS but are allowed by the current."; |
|
|
|
@ -158,20 +129,8 @@ const char* const description_schedule_cancellation_over_write = |
|
|
|
|
"Allow cancellation op to be scheduled over a write"; |
|
|
|
|
const char* const additional_constraints_schedule_cancellation_over_write = |
|
|
|
|
"{}"; |
|
|
|
|
const char* const description_separate_ping_from_keepalive = |
|
|
|
|
"Keep a different keepalive timeout (resolution is seeing data after " |
|
|
|
|
"sending a ping) from a ping timeout (resolution is getting a ping ack " |
|
|
|
|
"after sending a ping) The first can be short and determines liveness. The " |
|
|
|
|
"second can be longer and determines protocol correctness."; |
|
|
|
|
const char* const additional_constraints_separate_ping_from_keepalive = "{}"; |
|
|
|
|
const char* const description_server_privacy = "If set, server privacy"; |
|
|
|
|
const char* const additional_constraints_server_privacy = "{}"; |
|
|
|
|
const char* const description_settings_timeout = |
|
|
|
|
"If set, use the settings timeout to send settings frame to the peer."; |
|
|
|
|
const char* const additional_constraints_settings_timeout = "{}"; |
|
|
|
|
const char* const description_tarpit = |
|
|
|
|
"If set, tarpit invalid requests for some amount of time"; |
|
|
|
|
const char* const additional_constraints_tarpit = "{}"; |
|
|
|
|
const char* const description_tcp_frame_size_tuning = |
|
|
|
|
"If set, enables TCP to use RPC size estimation made by higher layers. TCP " |
|
|
|
|
"would not indicate completion of a read operation until a specified " |
|
|
|
@ -188,10 +147,6 @@ const char* const description_unconstrained_max_quota_buffer_size = |
|
|
|
|
"Discard the cap on the max free pool size for one memory allocator"; |
|
|
|
|
const char* const additional_constraints_unconstrained_max_quota_buffer_size = |
|
|
|
|
"{}"; |
|
|
|
|
const char* const description_uniquely_unowned = |
|
|
|
|
"Ensure HPACK table takes a unique copy of data when parsing unknown " |
|
|
|
|
"metadata"; |
|
|
|
|
const char* const additional_constraints_uniquely_unowned = "{}"; |
|
|
|
|
const char* const description_work_serializer_clears_time_cache = |
|
|
|
|
"Have the work serializer clear the time cache when it dispatches work."; |
|
|
|
|
const char* const additional_constraints_work_serializer_clears_time_cache = |
|
|
|
@ -223,10 +178,6 @@ const bool kDefaultForDebugOnly = true; |
|
|
|
|
namespace grpc_core { |
|
|
|
|
|
|
|
|
|
const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
{"block_excessive_requests_before_settings_ack", |
|
|
|
|
description_block_excessive_requests_before_settings_ack, |
|
|
|
|
additional_constraints_block_excessive_requests_before_settings_ack, |
|
|
|
|
nullptr, 0, true, true}, |
|
|
|
|
{"call_status_override_on_cancellation", |
|
|
|
|
description_call_status_override_on_cancellation, |
|
|
|
|
additional_constraints_call_status_override_on_cancellation, nullptr, 0, |
|
|
|
@ -237,16 +188,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
additional_constraints_client_idleness, nullptr, 0, true, true}, |
|
|
|
|
{"client_privacy", description_client_privacy, |
|
|
|
|
additional_constraints_client_privacy, nullptr, 0, false, false}, |
|
|
|
|
{"combiner_offload_to_event_engine", |
|
|
|
|
description_combiner_offload_to_event_engine, |
|
|
|
|
additional_constraints_combiner_offload_to_event_engine, nullptr, 0, true, |
|
|
|
|
true}, |
|
|
|
|
{"chttp2_batch_requests", description_chttp2_batch_requests, |
|
|
|
|
additional_constraints_chttp2_batch_requests, |
|
|
|
|
required_experiments_chttp2_batch_requests, 1, true, true}, |
|
|
|
|
{"chttp2_offload_on_rst_stream", description_chttp2_offload_on_rst_stream, |
|
|
|
|
additional_constraints_chttp2_offload_on_rst_stream, |
|
|
|
|
required_experiments_chttp2_offload_on_rst_stream, 1, true, true}, |
|
|
|
|
{"event_engine_client", description_event_engine_client, |
|
|
|
|
additional_constraints_event_engine_client, nullptr, 0, false, true}, |
|
|
|
|
{"event_engine_dns", description_event_engine_dns, |
|
|
|
@ -261,8 +202,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
additional_constraints_keepalive_fix, nullptr, 0, false, false}, |
|
|
|
|
{"keepalive_server_fix", description_keepalive_server_fix, |
|
|
|
|
additional_constraints_keepalive_server_fix, nullptr, 0, false, false}, |
|
|
|
|
{"lazier_stream_updates", description_lazier_stream_updates, |
|
|
|
|
additional_constraints_lazier_stream_updates, nullptr, 0, true, true}, |
|
|
|
|
{"memory_pressure_controller", description_memory_pressure_controller, |
|
|
|
|
additional_constraints_memory_pressure_controller, nullptr, 0, false, |
|
|
|
|
true}, |
|
|
|
@ -278,8 +217,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
additional_constraints_pending_queue_cap, nullptr, 0, true, true}, |
|
|
|
|
{"pick_first_happy_eyeballs", description_pick_first_happy_eyeballs, |
|
|
|
|
additional_constraints_pick_first_happy_eyeballs, nullptr, 0, true, true}, |
|
|
|
|
{"ping_on_rst_stream", description_ping_on_rst_stream, |
|
|
|
|
additional_constraints_ping_on_rst_stream, nullptr, 0, true, true}, |
|
|
|
|
{"promise_based_client_call", description_promise_based_client_call, |
|
|
|
|
additional_constraints_promise_based_client_call, nullptr, 0, false, true}, |
|
|
|
|
{"promise_based_inproc_transport", |
|
|
|
@ -287,8 +224,7 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
additional_constraints_promise_based_inproc_transport, nullptr, 0, false, |
|
|
|
|
false}, |
|
|
|
|
{"promise_based_server_call", description_promise_based_server_call, |
|
|
|
|
additional_constraints_promise_based_server_call, |
|
|
|
|
required_experiments_promise_based_server_call, 1, false, true}, |
|
|
|
|
additional_constraints_promise_based_server_call, nullptr, 0, false, true}, |
|
|
|
|
{"red_max_concurrent_streams", description_red_max_concurrent_streams, |
|
|
|
|
additional_constraints_red_max_concurrent_streams, nullptr, 0, false, |
|
|
|
|
true}, |
|
|
|
@ -311,15 +247,8 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
description_schedule_cancellation_over_write, |
|
|
|
|
additional_constraints_schedule_cancellation_over_write, nullptr, 0, false, |
|
|
|
|
true}, |
|
|
|
|
{"separate_ping_from_keepalive", description_separate_ping_from_keepalive, |
|
|
|
|
additional_constraints_separate_ping_from_keepalive, nullptr, 0, true, |
|
|
|
|
true}, |
|
|
|
|
{"server_privacy", description_server_privacy, |
|
|
|
|
additional_constraints_server_privacy, nullptr, 0, false, false}, |
|
|
|
|
{"settings_timeout", description_settings_timeout, |
|
|
|
|
additional_constraints_settings_timeout, nullptr, 0, true, true}, |
|
|
|
|
{"tarpit", description_tarpit, additional_constraints_tarpit, nullptr, 0, |
|
|
|
|
true, true}, |
|
|
|
|
{"tcp_frame_size_tuning", description_tcp_frame_size_tuning, |
|
|
|
|
additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true}, |
|
|
|
|
{"tcp_rcv_lowat", description_tcp_rcv_lowat, |
|
|
|
@ -330,8 +259,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
description_unconstrained_max_quota_buffer_size, |
|
|
|
|
additional_constraints_unconstrained_max_quota_buffer_size, nullptr, 0, |
|
|
|
|
false, true}, |
|
|
|
|
{"uniquely_unowned", description_uniquely_unowned, |
|
|
|
|
additional_constraints_uniquely_unowned, nullptr, 0, true, true}, |
|
|
|
|
{"work_serializer_clears_time_cache", |
|
|
|
|
description_work_serializer_clears_time_cache, |
|
|
|
|
additional_constraints_work_serializer_clears_time_cache, nullptr, 0, true, |
|
|
|
@ -351,10 +278,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
|
|
|
|
|
#elif defined(GPR_WINDOWS) |
|
|
|
|
namespace { |
|
|
|
|
const char* const description_block_excessive_requests_before_settings_ack = |
|
|
|
|
"If set, block excessive requests before receiving SETTINGS ACK."; |
|
|
|
|
const char* const |
|
|
|
|
additional_constraints_block_excessive_requests_before_settings_ack = "{}"; |
|
|
|
|
const char* const description_call_status_override_on_cancellation = |
|
|
|
|
"Avoid overriding call status of successfully finished calls if it races " |
|
|
|
|
"with cancellation."; |
|
|
|
@ -368,21 +291,6 @@ const char* const description_client_idleness = |
|
|
|
|
const char* const additional_constraints_client_idleness = "{}"; |
|
|
|
|
const char* const description_client_privacy = "If set, client privacy"; |
|
|
|
|
const char* const additional_constraints_client_privacy = "{}"; |
|
|
|
|
const char* const description_combiner_offload_to_event_engine = |
|
|
|
|
"Offload Combiner work onto the EventEngine instead of the Executor."; |
|
|
|
|
const char* const additional_constraints_combiner_offload_to_event_engine = |
|
|
|
|
"{}"; |
|
|
|
|
const char* const description_chttp2_batch_requests = |
|
|
|
|
"Cap the number of requests received by one transport read prior to " |
|
|
|
|
"offload."; |
|
|
|
|
const char* const additional_constraints_chttp2_batch_requests = "{}"; |
|
|
|
|
const uint8_t required_experiments_chttp2_batch_requests[] = { |
|
|
|
|
static_cast<uint8_t>(grpc_core::kExperimentIdCombinerOffloadToEventEngine)}; |
|
|
|
|
const char* const description_chttp2_offload_on_rst_stream = |
|
|
|
|
"Offload work on RST_STREAM."; |
|
|
|
|
const char* const additional_constraints_chttp2_offload_on_rst_stream = "{}"; |
|
|
|
|
const uint8_t required_experiments_chttp2_offload_on_rst_stream[] = { |
|
|
|
|
static_cast<uint8_t>(grpc_core::kExperimentIdCombinerOffloadToEventEngine)}; |
|
|
|
|
const char* const description_event_engine_client = |
|
|
|
|
"Use EventEngine clients instead of iomgr's grpc_tcp_client"; |
|
|
|
|
const char* const additional_constraints_event_engine_client = "{}"; |
|
|
|
@ -406,10 +314,6 @@ const char* const description_keepalive_server_fix = |
|
|
|
|
"Allows overriding keepalive_permit_without_calls for servers. Refer " |
|
|
|
|
"https://github.com/grpc/grpc/pull/33917 for more information."; |
|
|
|
|
const char* const additional_constraints_keepalive_server_fix = "{}"; |
|
|
|
|
const char* const description_lazier_stream_updates = |
|
|
|
|
"Allow streams to consume up to 50% of the incoming window before we force " |
|
|
|
|
"send a flow control update."; |
|
|
|
|
const char* const additional_constraints_lazier_stream_updates = "{}"; |
|
|
|
|
const char* const description_memory_pressure_controller = |
|
|
|
|
"New memory pressure controller"; |
|
|
|
|
const char* const additional_constraints_memory_pressure_controller = "{}"; |
|
|
|
@ -439,10 +343,6 @@ const char* const additional_constraints_pending_queue_cap = "{}"; |
|
|
|
|
const char* const description_pick_first_happy_eyeballs = |
|
|
|
|
"Use Happy Eyeballs in pick_first."; |
|
|
|
|
const char* const additional_constraints_pick_first_happy_eyeballs = "{}"; |
|
|
|
|
const char* const description_ping_on_rst_stream = |
|
|
|
|
"Send a ping on receiving some RST_STREAM frames on the server (proportion " |
|
|
|
|
"configurable via grpc.http2.ping_on_rst_stream_percent channel arg)."; |
|
|
|
|
const char* const additional_constraints_ping_on_rst_stream = "{}"; |
|
|
|
|
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)"; |
|
|
|
@ -454,8 +354,6 @@ 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)"; |
|
|
|
|
const char* const additional_constraints_promise_based_server_call = "{}"; |
|
|
|
|
const uint8_t required_experiments_promise_based_server_call[] = { |
|
|
|
|
static_cast<uint8_t>(grpc_core::kExperimentIdLazierStreamUpdates)}; |
|
|
|
|
const char* const description_red_max_concurrent_streams = |
|
|
|
|
"Perform random early rejection of requests that would exceed a newly " |
|
|
|
|
"reduced MAX_CONCURRENT_STREAMS but are allowed by the current."; |
|
|
|
@ -485,20 +383,8 @@ const char* const description_schedule_cancellation_over_write = |
|
|
|
|
"Allow cancellation op to be scheduled over a write"; |
|
|
|
|
const char* const additional_constraints_schedule_cancellation_over_write = |
|
|
|
|
"{}"; |
|
|
|
|
const char* const description_separate_ping_from_keepalive = |
|
|
|
|
"Keep a different keepalive timeout (resolution is seeing data after " |
|
|
|
|
"sending a ping) from a ping timeout (resolution is getting a ping ack " |
|
|
|
|
"after sending a ping) The first can be short and determines liveness. The " |
|
|
|
|
"second can be longer and determines protocol correctness."; |
|
|
|
|
const char* const additional_constraints_separate_ping_from_keepalive = "{}"; |
|
|
|
|
const char* const description_server_privacy = "If set, server privacy"; |
|
|
|
|
const char* const additional_constraints_server_privacy = "{}"; |
|
|
|
|
const char* const description_settings_timeout = |
|
|
|
|
"If set, use the settings timeout to send settings frame to the peer."; |
|
|
|
|
const char* const additional_constraints_settings_timeout = "{}"; |
|
|
|
|
const char* const description_tarpit = |
|
|
|
|
"If set, tarpit invalid requests for some amount of time"; |
|
|
|
|
const char* const additional_constraints_tarpit = "{}"; |
|
|
|
|
const char* const description_tcp_frame_size_tuning = |
|
|
|
|
"If set, enables TCP to use RPC size estimation made by higher layers. TCP " |
|
|
|
|
"would not indicate completion of a read operation until a specified " |
|
|
|
@ -515,10 +401,6 @@ const char* const description_unconstrained_max_quota_buffer_size = |
|
|
|
|
"Discard the cap on the max free pool size for one memory allocator"; |
|
|
|
|
const char* const additional_constraints_unconstrained_max_quota_buffer_size = |
|
|
|
|
"{}"; |
|
|
|
|
const char* const description_uniquely_unowned = |
|
|
|
|
"Ensure HPACK table takes a unique copy of data when parsing unknown " |
|
|
|
|
"metadata"; |
|
|
|
|
const char* const additional_constraints_uniquely_unowned = "{}"; |
|
|
|
|
const char* const description_work_serializer_clears_time_cache = |
|
|
|
|
"Have the work serializer clear the time cache when it dispatches work."; |
|
|
|
|
const char* const additional_constraints_work_serializer_clears_time_cache = |
|
|
|
@ -550,10 +432,6 @@ const bool kDefaultForDebugOnly = true; |
|
|
|
|
namespace grpc_core { |
|
|
|
|
|
|
|
|
|
const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
{"block_excessive_requests_before_settings_ack", |
|
|
|
|
description_block_excessive_requests_before_settings_ack, |
|
|
|
|
additional_constraints_block_excessive_requests_before_settings_ack, |
|
|
|
|
nullptr, 0, true, true}, |
|
|
|
|
{"call_status_override_on_cancellation", |
|
|
|
|
description_call_status_override_on_cancellation, |
|
|
|
|
additional_constraints_call_status_override_on_cancellation, nullptr, 0, |
|
|
|
@ -564,16 +442,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
additional_constraints_client_idleness, nullptr, 0, true, true}, |
|
|
|
|
{"client_privacy", description_client_privacy, |
|
|
|
|
additional_constraints_client_privacy, nullptr, 0, false, false}, |
|
|
|
|
{"combiner_offload_to_event_engine", |
|
|
|
|
description_combiner_offload_to_event_engine, |
|
|
|
|
additional_constraints_combiner_offload_to_event_engine, nullptr, 0, true, |
|
|
|
|
true}, |
|
|
|
|
{"chttp2_batch_requests", description_chttp2_batch_requests, |
|
|
|
|
additional_constraints_chttp2_batch_requests, |
|
|
|
|
required_experiments_chttp2_batch_requests, 1, true, true}, |
|
|
|
|
{"chttp2_offload_on_rst_stream", description_chttp2_offload_on_rst_stream, |
|
|
|
|
additional_constraints_chttp2_offload_on_rst_stream, |
|
|
|
|
required_experiments_chttp2_offload_on_rst_stream, 1, true, true}, |
|
|
|
|
{"event_engine_client", description_event_engine_client, |
|
|
|
|
additional_constraints_event_engine_client, nullptr, 0, false, true}, |
|
|
|
|
{"event_engine_dns", description_event_engine_dns, |
|
|
|
@ -588,8 +456,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
additional_constraints_keepalive_fix, nullptr, 0, false, false}, |
|
|
|
|
{"keepalive_server_fix", description_keepalive_server_fix, |
|
|
|
|
additional_constraints_keepalive_server_fix, nullptr, 0, false, false}, |
|
|
|
|
{"lazier_stream_updates", description_lazier_stream_updates, |
|
|
|
|
additional_constraints_lazier_stream_updates, nullptr, 0, true, true}, |
|
|
|
|
{"memory_pressure_controller", description_memory_pressure_controller, |
|
|
|
|
additional_constraints_memory_pressure_controller, nullptr, 0, false, |
|
|
|
|
true}, |
|
|
|
@ -605,8 +471,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
additional_constraints_pending_queue_cap, nullptr, 0, true, true}, |
|
|
|
|
{"pick_first_happy_eyeballs", description_pick_first_happy_eyeballs, |
|
|
|
|
additional_constraints_pick_first_happy_eyeballs, nullptr, 0, true, true}, |
|
|
|
|
{"ping_on_rst_stream", description_ping_on_rst_stream, |
|
|
|
|
additional_constraints_ping_on_rst_stream, nullptr, 0, true, true}, |
|
|
|
|
{"promise_based_client_call", description_promise_based_client_call, |
|
|
|
|
additional_constraints_promise_based_client_call, nullptr, 0, false, true}, |
|
|
|
|
{"promise_based_inproc_transport", |
|
|
|
@ -614,8 +478,7 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
additional_constraints_promise_based_inproc_transport, nullptr, 0, false, |
|
|
|
|
false}, |
|
|
|
|
{"promise_based_server_call", description_promise_based_server_call, |
|
|
|
|
additional_constraints_promise_based_server_call, |
|
|
|
|
required_experiments_promise_based_server_call, 1, false, true}, |
|
|
|
|
additional_constraints_promise_based_server_call, nullptr, 0, false, true}, |
|
|
|
|
{"red_max_concurrent_streams", description_red_max_concurrent_streams, |
|
|
|
|
additional_constraints_red_max_concurrent_streams, nullptr, 0, false, |
|
|
|
|
true}, |
|
|
|
@ -638,15 +501,8 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
description_schedule_cancellation_over_write, |
|
|
|
|
additional_constraints_schedule_cancellation_over_write, nullptr, 0, false, |
|
|
|
|
true}, |
|
|
|
|
{"separate_ping_from_keepalive", description_separate_ping_from_keepalive, |
|
|
|
|
additional_constraints_separate_ping_from_keepalive, nullptr, 0, true, |
|
|
|
|
true}, |
|
|
|
|
{"server_privacy", description_server_privacy, |
|
|
|
|
additional_constraints_server_privacy, nullptr, 0, false, false}, |
|
|
|
|
{"settings_timeout", description_settings_timeout, |
|
|
|
|
additional_constraints_settings_timeout, nullptr, 0, true, true}, |
|
|
|
|
{"tarpit", description_tarpit, additional_constraints_tarpit, nullptr, 0, |
|
|
|
|
true, true}, |
|
|
|
|
{"tcp_frame_size_tuning", description_tcp_frame_size_tuning, |
|
|
|
|
additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true}, |
|
|
|
|
{"tcp_rcv_lowat", description_tcp_rcv_lowat, |
|
|
|
@ -657,8 +513,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
description_unconstrained_max_quota_buffer_size, |
|
|
|
|
additional_constraints_unconstrained_max_quota_buffer_size, nullptr, 0, |
|
|
|
|
false, true}, |
|
|
|
|
{"uniquely_unowned", description_uniquely_unowned, |
|
|
|
|
additional_constraints_uniquely_unowned, nullptr, 0, true, true}, |
|
|
|
|
{"work_serializer_clears_time_cache", |
|
|
|
|
description_work_serializer_clears_time_cache, |
|
|
|
|
additional_constraints_work_serializer_clears_time_cache, nullptr, 0, true, |
|
|
|
@ -678,10 +532,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
|
|
|
|
|
#else |
|
|
|
|
namespace { |
|
|
|
|
const char* const description_block_excessive_requests_before_settings_ack = |
|
|
|
|
"If set, block excessive requests before receiving SETTINGS ACK."; |
|
|
|
|
const char* const |
|
|
|
|
additional_constraints_block_excessive_requests_before_settings_ack = "{}"; |
|
|
|
|
const char* const description_call_status_override_on_cancellation = |
|
|
|
|
"Avoid overriding call status of successfully finished calls if it races " |
|
|
|
|
"with cancellation."; |
|
|
|
@ -695,21 +545,6 @@ const char* const description_client_idleness = |
|
|
|
|
const char* const additional_constraints_client_idleness = "{}"; |
|
|
|
|
const char* const description_client_privacy = "If set, client privacy"; |
|
|
|
|
const char* const additional_constraints_client_privacy = "{}"; |
|
|
|
|
const char* const description_combiner_offload_to_event_engine = |
|
|
|
|
"Offload Combiner work onto the EventEngine instead of the Executor."; |
|
|
|
|
const char* const additional_constraints_combiner_offload_to_event_engine = |
|
|
|
|
"{}"; |
|
|
|
|
const char* const description_chttp2_batch_requests = |
|
|
|
|
"Cap the number of requests received by one transport read prior to " |
|
|
|
|
"offload."; |
|
|
|
|
const char* const additional_constraints_chttp2_batch_requests = "{}"; |
|
|
|
|
const uint8_t required_experiments_chttp2_batch_requests[] = { |
|
|
|
|
static_cast<uint8_t>(grpc_core::kExperimentIdCombinerOffloadToEventEngine)}; |
|
|
|
|
const char* const description_chttp2_offload_on_rst_stream = |
|
|
|
|
"Offload work on RST_STREAM."; |
|
|
|
|
const char* const additional_constraints_chttp2_offload_on_rst_stream = "{}"; |
|
|
|
|
const uint8_t required_experiments_chttp2_offload_on_rst_stream[] = { |
|
|
|
|
static_cast<uint8_t>(grpc_core::kExperimentIdCombinerOffloadToEventEngine)}; |
|
|
|
|
const char* const description_event_engine_client = |
|
|
|
|
"Use EventEngine clients instead of iomgr's grpc_tcp_client"; |
|
|
|
|
const char* const additional_constraints_event_engine_client = "{}"; |
|
|
|
@ -733,10 +568,6 @@ const char* const description_keepalive_server_fix = |
|
|
|
|
"Allows overriding keepalive_permit_without_calls for servers. Refer " |
|
|
|
|
"https://github.com/grpc/grpc/pull/33917 for more information."; |
|
|
|
|
const char* const additional_constraints_keepalive_server_fix = "{}"; |
|
|
|
|
const char* const description_lazier_stream_updates = |
|
|
|
|
"Allow streams to consume up to 50% of the incoming window before we force " |
|
|
|
|
"send a flow control update."; |
|
|
|
|
const char* const additional_constraints_lazier_stream_updates = "{}"; |
|
|
|
|
const char* const description_memory_pressure_controller = |
|
|
|
|
"New memory pressure controller"; |
|
|
|
|
const char* const additional_constraints_memory_pressure_controller = "{}"; |
|
|
|
@ -766,10 +597,6 @@ const char* const additional_constraints_pending_queue_cap = "{}"; |
|
|
|
|
const char* const description_pick_first_happy_eyeballs = |
|
|
|
|
"Use Happy Eyeballs in pick_first."; |
|
|
|
|
const char* const additional_constraints_pick_first_happy_eyeballs = "{}"; |
|
|
|
|
const char* const description_ping_on_rst_stream = |
|
|
|
|
"Send a ping on receiving some RST_STREAM frames on the server (proportion " |
|
|
|
|
"configurable via grpc.http2.ping_on_rst_stream_percent channel arg)."; |
|
|
|
|
const char* const additional_constraints_ping_on_rst_stream = "{}"; |
|
|
|
|
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)"; |
|
|
|
@ -781,8 +608,6 @@ 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)"; |
|
|
|
|
const char* const additional_constraints_promise_based_server_call = "{}"; |
|
|
|
|
const uint8_t required_experiments_promise_based_server_call[] = { |
|
|
|
|
static_cast<uint8_t>(grpc_core::kExperimentIdLazierStreamUpdates)}; |
|
|
|
|
const char* const description_red_max_concurrent_streams = |
|
|
|
|
"Perform random early rejection of requests that would exceed a newly " |
|
|
|
|
"reduced MAX_CONCURRENT_STREAMS but are allowed by the current."; |
|
|
|
@ -812,20 +637,8 @@ const char* const description_schedule_cancellation_over_write = |
|
|
|
|
"Allow cancellation op to be scheduled over a write"; |
|
|
|
|
const char* const additional_constraints_schedule_cancellation_over_write = |
|
|
|
|
"{}"; |
|
|
|
|
const char* const description_separate_ping_from_keepalive = |
|
|
|
|
"Keep a different keepalive timeout (resolution is seeing data after " |
|
|
|
|
"sending a ping) from a ping timeout (resolution is getting a ping ack " |
|
|
|
|
"after sending a ping) The first can be short and determines liveness. The " |
|
|
|
|
"second can be longer and determines protocol correctness."; |
|
|
|
|
const char* const additional_constraints_separate_ping_from_keepalive = "{}"; |
|
|
|
|
const char* const description_server_privacy = "If set, server privacy"; |
|
|
|
|
const char* const additional_constraints_server_privacy = "{}"; |
|
|
|
|
const char* const description_settings_timeout = |
|
|
|
|
"If set, use the settings timeout to send settings frame to the peer."; |
|
|
|
|
const char* const additional_constraints_settings_timeout = "{}"; |
|
|
|
|
const char* const description_tarpit = |
|
|
|
|
"If set, tarpit invalid requests for some amount of time"; |
|
|
|
|
const char* const additional_constraints_tarpit = "{}"; |
|
|
|
|
const char* const description_tcp_frame_size_tuning = |
|
|
|
|
"If set, enables TCP to use RPC size estimation made by higher layers. TCP " |
|
|
|
|
"would not indicate completion of a read operation until a specified " |
|
|
|
@ -842,10 +655,6 @@ const char* const description_unconstrained_max_quota_buffer_size = |
|
|
|
|
"Discard the cap on the max free pool size for one memory allocator"; |
|
|
|
|
const char* const additional_constraints_unconstrained_max_quota_buffer_size = |
|
|
|
|
"{}"; |
|
|
|
|
const char* const description_uniquely_unowned = |
|
|
|
|
"Ensure HPACK table takes a unique copy of data when parsing unknown " |
|
|
|
|
"metadata"; |
|
|
|
|
const char* const additional_constraints_uniquely_unowned = "{}"; |
|
|
|
|
const char* const description_work_serializer_clears_time_cache = |
|
|
|
|
"Have the work serializer clear the time cache when it dispatches work."; |
|
|
|
|
const char* const additional_constraints_work_serializer_clears_time_cache = |
|
|
|
@ -877,10 +686,6 @@ const bool kDefaultForDebugOnly = true; |
|
|
|
|
namespace grpc_core { |
|
|
|
|
|
|
|
|
|
const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
{"block_excessive_requests_before_settings_ack", |
|
|
|
|
description_block_excessive_requests_before_settings_ack, |
|
|
|
|
additional_constraints_block_excessive_requests_before_settings_ack, |
|
|
|
|
nullptr, 0, true, true}, |
|
|
|
|
{"call_status_override_on_cancellation", |
|
|
|
|
description_call_status_override_on_cancellation, |
|
|
|
|
additional_constraints_call_status_override_on_cancellation, nullptr, 0, |
|
|
|
@ -891,16 +696,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
additional_constraints_client_idleness, nullptr, 0, true, true}, |
|
|
|
|
{"client_privacy", description_client_privacy, |
|
|
|
|
additional_constraints_client_privacy, nullptr, 0, false, false}, |
|
|
|
|
{"combiner_offload_to_event_engine", |
|
|
|
|
description_combiner_offload_to_event_engine, |
|
|
|
|
additional_constraints_combiner_offload_to_event_engine, nullptr, 0, true, |
|
|
|
|
true}, |
|
|
|
|
{"chttp2_batch_requests", description_chttp2_batch_requests, |
|
|
|
|
additional_constraints_chttp2_batch_requests, |
|
|
|
|
required_experiments_chttp2_batch_requests, 1, true, true}, |
|
|
|
|
{"chttp2_offload_on_rst_stream", description_chttp2_offload_on_rst_stream, |
|
|
|
|
additional_constraints_chttp2_offload_on_rst_stream, |
|
|
|
|
required_experiments_chttp2_offload_on_rst_stream, 1, true, true}, |
|
|
|
|
{"event_engine_client", description_event_engine_client, |
|
|
|
|
additional_constraints_event_engine_client, nullptr, 0, false, true}, |
|
|
|
|
{"event_engine_dns", description_event_engine_dns, |
|
|
|
@ -915,8 +710,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
additional_constraints_keepalive_fix, nullptr, 0, false, false}, |
|
|
|
|
{"keepalive_server_fix", description_keepalive_server_fix, |
|
|
|
|
additional_constraints_keepalive_server_fix, nullptr, 0, false, false}, |
|
|
|
|
{"lazier_stream_updates", description_lazier_stream_updates, |
|
|
|
|
additional_constraints_lazier_stream_updates, nullptr, 0, true, true}, |
|
|
|
|
{"memory_pressure_controller", description_memory_pressure_controller, |
|
|
|
|
additional_constraints_memory_pressure_controller, nullptr, 0, false, |
|
|
|
|
true}, |
|
|
|
@ -932,8 +725,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
additional_constraints_pending_queue_cap, nullptr, 0, true, true}, |
|
|
|
|
{"pick_first_happy_eyeballs", description_pick_first_happy_eyeballs, |
|
|
|
|
additional_constraints_pick_first_happy_eyeballs, nullptr, 0, true, true}, |
|
|
|
|
{"ping_on_rst_stream", description_ping_on_rst_stream, |
|
|
|
|
additional_constraints_ping_on_rst_stream, nullptr, 0, true, true}, |
|
|
|
|
{"promise_based_client_call", description_promise_based_client_call, |
|
|
|
|
additional_constraints_promise_based_client_call, nullptr, 0, false, true}, |
|
|
|
|
{"promise_based_inproc_transport", |
|
|
|
@ -941,8 +732,7 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
additional_constraints_promise_based_inproc_transport, nullptr, 0, false, |
|
|
|
|
false}, |
|
|
|
|
{"promise_based_server_call", description_promise_based_server_call, |
|
|
|
|
additional_constraints_promise_based_server_call, |
|
|
|
|
required_experiments_promise_based_server_call, 1, false, true}, |
|
|
|
|
additional_constraints_promise_based_server_call, nullptr, 0, false, true}, |
|
|
|
|
{"red_max_concurrent_streams", description_red_max_concurrent_streams, |
|
|
|
|
additional_constraints_red_max_concurrent_streams, nullptr, 0, false, |
|
|
|
|
true}, |
|
|
|
@ -965,15 +755,8 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
description_schedule_cancellation_over_write, |
|
|
|
|
additional_constraints_schedule_cancellation_over_write, nullptr, 0, false, |
|
|
|
|
true}, |
|
|
|
|
{"separate_ping_from_keepalive", description_separate_ping_from_keepalive, |
|
|
|
|
additional_constraints_separate_ping_from_keepalive, nullptr, 0, true, |
|
|
|
|
true}, |
|
|
|
|
{"server_privacy", description_server_privacy, |
|
|
|
|
additional_constraints_server_privacy, nullptr, 0, false, false}, |
|
|
|
|
{"settings_timeout", description_settings_timeout, |
|
|
|
|
additional_constraints_settings_timeout, nullptr, 0, true, true}, |
|
|
|
|
{"tarpit", description_tarpit, additional_constraints_tarpit, nullptr, 0, |
|
|
|
|
true, true}, |
|
|
|
|
{"tcp_frame_size_tuning", description_tcp_frame_size_tuning, |
|
|
|
|
additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true}, |
|
|
|
|
{"tcp_rcv_lowat", description_tcp_rcv_lowat, |
|
|
|
@ -984,8 +767,6 @@ const ExperimentMetadata g_experiment_metadata[] = { |
|
|
|
|
description_unconstrained_max_quota_buffer_size, |
|
|
|
|
additional_constraints_unconstrained_max_quota_buffer_size, nullptr, 0, |
|
|
|
|
false, true}, |
|
|
|
|
{"uniquely_unowned", description_uniquely_unowned, |
|
|
|
|
additional_constraints_uniquely_unowned, nullptr, 0, true, true}, |
|
|
|
|
{"work_serializer_clears_time_cache", |
|
|
|
|
description_work_serializer_clears_time_cache, |
|
|
|
|
additional_constraints_work_serializer_clears_time_cache, nullptr, 0, true, |
|
|
|
|