grpc 1.60.2 → 1.61.0.pre2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +208 -165
- data/include/grpc/event_engine/event_engine.h +59 -12
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +6 -0
- data/include/grpc/event_engine/internal/slice_cast.h +12 -0
- data/include/grpc/event_engine/memory_allocator.h +3 -1
- data/include/grpc/event_engine/slice.h +5 -0
- data/include/grpc/grpc_security.h +22 -1
- data/include/grpc/impl/call.h +29 -0
- data/include/grpc/impl/channel_arg_names.h +12 -1
- data/include/grpc/impl/slice_type.h +1 -1
- data/include/grpc/module.modulemap +1 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +54 -7
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +20 -6
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +10 -13
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -10
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +326 -0
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +143 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +32 -6
- data/src/core/ext/filters/client_channel/client_channel_internal.h +2 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +54 -21
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.cc +12 -15
- data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.h +8 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +139 -92
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +9 -4
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +9 -4
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +10 -11
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +94 -93
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +5 -3
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +12 -15
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +38 -16
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +25 -28
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +10 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +37 -35
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +504 -461
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +232 -122
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -6
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +642 -251
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +2 -6
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +7 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +6 -8
- data/src/core/ext/filters/client_channel/resolver/xds/xds_dependency_manager.cc +1031 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_dependency_manager.h +277 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +128 -270
- data/src/core/ext/filters/client_channel/resolver/xds/{xds_resolver.h → xds_resolver_attributes.h} +5 -4
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_trace.cc +25 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_trace.h +30 -0
- data/src/core/ext/filters/client_channel/retry_filter.cc +1 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +35 -17
- data/src/core/ext/filters/deadline/deadline_filter.cc +12 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +17 -13
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +13 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +23 -32
- data/src/core/ext/filters/http/client/http_client_filter.h +10 -5
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
- data/src/core/ext/filters/http/client_authority_filter.h +12 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +42 -20
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +55 -80
- data/src/core/ext/filters/http/message_compress/compression_filter.h +54 -12
- data/src/core/ext/filters/http/message_compress/legacy_compression_filter.cc +325 -0
- data/src/core/ext/filters/http/message_compress/legacy_compression_filter.h +139 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +41 -41
- data/src/core/ext/filters/http/server/http_server_filter.h +11 -4
- data/src/core/ext/filters/message_size/message_size_filter.cc +56 -76
- data/src/core/ext/filters/message_size/message_size_filter.h +35 -23
- data/src/core/ext/filters/rbac/rbac_filter.cc +15 -11
- data/src/core/ext/filters/rbac/rbac_filter.h +11 -4
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +25 -13
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +47 -50
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +21 -4
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -2
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +11 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +68 -145
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +21 -82
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -8
- data/src/core/ext/transport/chttp2/transport/frame.cc +506 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +214 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +33 -79
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -7
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +27 -36
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +122 -32
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +142 -37
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -22
- data/src/core/ext/transport/chttp2/transport/parsing.cc +23 -37
- data/src/core/ext/transport/chttp2/transport/writing.cc +26 -58
- data/src/core/ext/transport/inproc/inproc_transport.cc +172 -13
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +712 -0
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +151 -0
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +33 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +133 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +50 -0
- data/src/core/ext/xds/certificate_provider_store.cc +2 -1
- data/src/core/ext/xds/certificate_provider_store.h +0 -5
- data/src/core/ext/xds/xds_api.cc +31 -18
- data/src/core/ext/xds/xds_api.h +2 -2
- data/src/core/ext/xds/xds_bootstrap.h +3 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +88 -287
- data/src/core/ext/xds/xds_certificate_provider.h +44 -111
- data/src/core/ext/xds/xds_client.cc +420 -414
- data/src/core/ext/xds/xds_client.h +31 -22
- data/src/core/ext/xds/xds_client_grpc.cc +3 -1
- data/src/core/ext/xds/xds_cluster.cc +104 -11
- data/src/core/ext/xds/xds_cluster.h +9 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +9 -5
- data/src/core/ext/xds/xds_common_types.cc +14 -10
- data/src/core/ext/xds/xds_endpoint.cc +9 -4
- data/src/core/ext/xds/xds_endpoint.h +5 -1
- data/src/core/ext/xds/xds_health_status.cc +12 -2
- data/src/core/ext/xds/xds_health_status.h +4 -2
- data/src/core/ext/xds/xds_http_rbac_filter.cc +5 -3
- data/src/core/ext/xds/xds_listener.cc +14 -8
- data/src/core/ext/xds/xds_resource_type_impl.h +6 -4
- data/src/core/ext/xds/xds_route_config.cc +34 -22
- data/src/core/ext/xds/xds_route_config.h +1 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +61 -57
- data/src/core/ext/xds/xds_transport.h +3 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +47 -50
- data/src/core/ext/xds/xds_transport_grpc.h +4 -0
- data/src/core/lib/channel/call_tracer.cc +12 -0
- data/src/core/lib/channel/call_tracer.h +17 -3
- data/src/core/lib/channel/channel_args.cc +24 -14
- data/src/core/lib/channel/channel_args.h +74 -13
- data/src/core/lib/channel/channel_stack.cc +27 -0
- data/src/core/lib/channel/channel_stack.h +10 -10
- data/src/core/lib/channel/connected_channel.cc +64 -18
- data/src/core/lib/channel/promise_based_filter.h +1041 -1
- data/src/core/lib/channel/server_call_tracer_filter.cc +43 -35
- data/src/core/lib/compression/compression_internal.cc +0 -3
- data/src/core/lib/event_engine/ares_resolver.cc +35 -14
- data/src/core/lib/event_engine/ares_resolver.h +9 -10
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +8 -1
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +132 -0
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +61 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +52 -36
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +4 -9
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +11 -3
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +9 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +7 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +17 -27
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +0 -3
- data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +55 -0
- data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +114 -0
- data/src/core/lib/event_engine/windows/native_windows_dns_resolver.h +51 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +7 -7
- data/src/core/lib/experiments/config.cc +13 -0
- data/src/core/lib/experiments/config.h +3 -0
- data/src/core/lib/experiments/experiments.cc +245 -366
- data/src/core/lib/experiments/experiments.h +50 -156
- data/src/core/lib/gprpp/debug_location.h +13 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +36 -7
- data/src/core/lib/gprpp/orphanable.h +27 -0
- data/src/core/lib/gprpp/ref_counted.h +63 -22
- data/src/core/lib/gprpp/ref_counted_ptr.h +70 -27
- data/src/core/lib/gprpp/ref_counted_string.h +13 -0
- data/src/core/lib/gprpp/status_helper.cc +1 -2
- data/src/core/lib/iomgr/combiner.cc +15 -51
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +31 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +16 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -3
- data/src/core/lib/load_balancing/lb_policy.h +1 -1
- data/src/core/lib/promise/activity.cc +17 -2
- data/src/core/lib/promise/activity.h +5 -4
- data/src/core/lib/promise/all_ok.h +80 -0
- data/src/core/lib/promise/detail/join_state.h +2077 -0
- data/src/core/lib/promise/detail/promise_factory.h +1 -0
- data/src/core/lib/promise/detail/promise_like.h +8 -1
- data/src/core/lib/promise/detail/seq_state.h +3458 -150
- data/src/core/lib/promise/detail/status.h +42 -5
- data/src/core/lib/promise/for_each.h +13 -1
- data/src/core/lib/promise/if.h +4 -0
- data/src/core/lib/promise/latch.h +6 -3
- data/src/core/lib/promise/party.cc +33 -31
- data/src/core/lib/promise/party.h +142 -6
- data/src/core/lib/promise/poll.h +39 -13
- data/src/core/lib/promise/promise.h +4 -0
- data/src/core/lib/promise/seq.h +107 -7
- data/src/core/lib/promise/status_flag.h +196 -0
- data/src/core/lib/promise/try_join.h +132 -0
- data/src/core/lib/promise/try_seq.h +132 -10
- data/src/core/lib/resolver/endpoint_addresses.cc +0 -1
- data/src/core/lib/resolver/endpoint_addresses.h +48 -0
- data/src/core/lib/resource_quota/arena.h +2 -2
- data/src/core/lib/resource_quota/memory_quota.cc +57 -8
- data/src/core/lib/resource_quota/memory_quota.h +6 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +14 -11
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +14 -5
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +4 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +28 -20
- data/src/core/lib/security/credentials/external/external_account_credentials.h +4 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +4 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +4 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +0 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +12 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +22 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +1 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -28
- data/src/core/lib/security/credentials/xds/xds_credentials.h +2 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -3
- data/src/core/lib/security/transport/auth_filters.h +71 -4
- data/src/core/lib/security/transport/client_auth_filter.cc +2 -4
- data/src/core/lib/security/transport/legacy_server_auth_filter.cc +244 -0
- data/src/core/lib/security/transport/server_auth_filter.cc +70 -90
- data/src/core/lib/slice/slice_buffer.h +3 -0
- data/src/core/lib/surface/builtins.cc +1 -1
- data/src/core/lib/surface/call.cc +683 -196
- data/src/core/lib/surface/call.h +26 -13
- data/src/core/lib/surface/call_trace.cc +42 -1
- data/src/core/lib/surface/channel.cc +0 -1
- data/src/core/lib/surface/channel.h +0 -6
- data/src/core/lib/surface/channel_init.h +26 -0
- data/src/core/lib/surface/init.cc +14 -8
- data/src/core/lib/surface/server.cc +256 -237
- data/src/core/lib/surface/server.h +26 -54
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/surface/wait_for_cq_end_op.h +94 -0
- data/src/core/lib/transport/call_final_info.cc +38 -0
- data/src/core/lib/transport/call_final_info.h +54 -0
- data/src/core/lib/transport/connectivity_state.cc +3 -2
- data/src/core/lib/transport/connectivity_state.h +4 -0
- data/src/core/lib/transport/metadata_batch.h +4 -4
- data/src/core/lib/transport/transport.cc +70 -19
- data/src/core/lib/transport/transport.h +395 -25
- data/src/core/plugin_registry/grpc_plugin_registry.cc +3 -0
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +65 -43
- data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
- data/src/ruby/ext/grpc/rb_grpc.c +0 -1
- data/src/ruby/ext/grpc/rb_grpc.h +0 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/upb/upb/reflection/def_pool.h +2 -2
- data/third_party/zlib/adler32.c +5 -27
- data/third_party/zlib/compress.c +5 -16
- data/third_party/zlib/crc32.c +86 -162
- data/third_party/zlib/deflate.c +233 -336
- data/third_party/zlib/deflate.h +8 -8
- data/third_party/zlib/gzguts.h +11 -12
- data/third_party/zlib/infback.c +7 -23
- data/third_party/zlib/inffast.c +1 -4
- data/third_party/zlib/inffast.h +1 -1
- data/third_party/zlib/inflate.c +30 -99
- data/third_party/zlib/inftrees.c +6 -11
- data/third_party/zlib/inftrees.h +3 -3
- data/third_party/zlib/trees.c +224 -302
- data/third_party/zlib/uncompr.c +4 -12
- data/third_party/zlib/zconf.h +6 -2
- data/third_party/zlib/zlib.h +191 -188
- data/third_party/zlib/zutil.c +16 -44
- data/third_party/zlib/zutil.h +10 -10
- metadata +35 -13
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +0 -1173
- data/src/core/lib/event_engine/memory_allocator.cc +0 -74
- data/src/core/lib/transport/pid_controller.cc +0 -51
- data/src/core/lib/transport/pid_controller.h +0 -116
- data/third_party/upb/upb/collections/array.h +0 -17
- data/third_party/upb/upb/collections/map.h +0 -17
- data/third_party/upb/upb/upb.hpp +0 -18
@@ -18,14 +18,12 @@
|
|
18
18
|
|
19
19
|
#include "src/core/lib/experiments/experiments.h"
|
20
20
|
|
21
|
+
#include <stdint.h>
|
22
|
+
|
21
23
|
#ifndef GRPC_EXPERIMENTS_ARE_FINAL
|
22
24
|
|
23
25
|
#if defined(GRPC_CFSTREAM)
|
24
26
|
namespace {
|
25
|
-
const char* const description_block_excessive_requests_before_settings_ack =
|
26
|
-
"If set, block excessive requests before receiving SETTINGS ACK.";
|
27
|
-
const char* const
|
28
|
-
additional_constraints_block_excessive_requests_before_settings_ack = "{}";
|
29
27
|
const char* const description_call_status_override_on_cancellation =
|
30
28
|
"Avoid overriding call status of successfully finished calls if it races "
|
31
29
|
"with cancellation.";
|
@@ -34,22 +32,11 @@ const char* const additional_constraints_call_status_override_on_cancellation =
|
|
34
32
|
const char* const description_canary_client_privacy =
|
35
33
|
"If set, canary client privacy";
|
36
34
|
const char* const additional_constraints_canary_client_privacy = "{}";
|
37
|
-
const char* const description_chttp2_batch_requests =
|
38
|
-
"Cap the number of requests received by one transport read prior to "
|
39
|
-
"offload.";
|
40
|
-
const char* const additional_constraints_chttp2_batch_requests = "{}";
|
41
|
-
const char* const description_chttp2_offload_on_rst_stream =
|
42
|
-
"Offload work on RST_STREAM.";
|
43
|
-
const char* const additional_constraints_chttp2_offload_on_rst_stream = "{}";
|
44
35
|
const char* const description_client_idleness =
|
45
36
|
"If enabled, client channel idleness is enabled by default.";
|
46
37
|
const char* const additional_constraints_client_idleness = "{}";
|
47
38
|
const char* const description_client_privacy = "If set, client privacy";
|
48
39
|
const char* const additional_constraints_client_privacy = "{}";
|
49
|
-
const char* const description_combiner_offload_to_event_engine =
|
50
|
-
"Offload Combiner work onto the EventEngine instead of the Executor.";
|
51
|
-
const char* const additional_constraints_combiner_offload_to_event_engine =
|
52
|
-
"{}";
|
53
40
|
const char* const description_event_engine_client =
|
54
41
|
"Use EventEngine clients instead of iomgr's grpc_tcp_client";
|
55
42
|
const char* const additional_constraints_event_engine_client = "{}";
|
@@ -73,23 +60,12 @@ const char* const description_keepalive_server_fix =
|
|
73
60
|
"Allows overriding keepalive_permit_without_calls for servers. Refer "
|
74
61
|
"https://github.com/grpc/grpc/pull/33917 for more information.";
|
75
62
|
const char* const additional_constraints_keepalive_server_fix = "{}";
|
76
|
-
const char* const description_lazier_stream_updates =
|
77
|
-
"Allow streams to consume up to 50% of the incoming window before we force "
|
78
|
-
"send a flow control update.";
|
79
|
-
const char* const additional_constraints_lazier_stream_updates = "{}";
|
80
|
-
const char* const description_memory_pressure_controller =
|
81
|
-
"New memory pressure controller";
|
82
|
-
const char* const additional_constraints_memory_pressure_controller = "{}";
|
83
63
|
const char* const description_monitoring_experiment =
|
84
64
|
"Placeholder experiment to prove/disprove our monitoring is working";
|
85
65
|
const char* const additional_constraints_monitoring_experiment = "{}";
|
86
66
|
const char* const description_multiping =
|
87
67
|
"Allow more than one ping to be in flight at a time by default.";
|
88
68
|
const char* const additional_constraints_multiping = "{}";
|
89
|
-
const char* const description_overload_protection =
|
90
|
-
"If chttp2 has more streams than it can handle open, send RST_STREAM "
|
91
|
-
"immediately on new streams appearing.";
|
92
|
-
const char* const additional_constraints_overload_protection = "{}";
|
93
69
|
const char* const description_peer_state_based_framing =
|
94
70
|
"If set, the max sizes of frames sent to lower layers is controlled based "
|
95
71
|
"on the peer's memory pressure which is reflected in its max http2 frame "
|
@@ -106,29 +82,26 @@ const char* const additional_constraints_pending_queue_cap = "{}";
|
|
106
82
|
const char* const description_pick_first_happy_eyeballs =
|
107
83
|
"Use Happy Eyeballs in pick_first.";
|
108
84
|
const char* const additional_constraints_pick_first_happy_eyeballs = "{}";
|
109
|
-
const char* const description_ping_on_rst_stream =
|
110
|
-
"Send a ping on receiving some RST_STREAM frames on the server (proportion "
|
111
|
-
"configurable via grpc.http2.ping_on_rst_stream_percent channel arg).";
|
112
|
-
const char* const additional_constraints_ping_on_rst_stream = "{}";
|
113
85
|
const char* const description_promise_based_client_call =
|
114
86
|
"If set, use the new gRPC promise based call code when it's appropriate "
|
115
87
|
"(ie when all filters in a stack are promise based)";
|
116
88
|
const char* const additional_constraints_promise_based_client_call = "{}";
|
117
|
-
const char* const description_promise_based_inproc_transport =
|
118
|
-
"Use promises for the in-process transport.";
|
119
|
-
const char* const additional_constraints_promise_based_inproc_transport = "{}";
|
120
89
|
const char* const description_promise_based_server_call =
|
121
90
|
"If set, use the new gRPC promise based call code when it's appropriate "
|
122
91
|
"(ie when all filters in a stack are promise based)";
|
123
92
|
const char* const additional_constraints_promise_based_server_call = "{}";
|
124
|
-
const char* const description_red_max_concurrent_streams =
|
125
|
-
"Perform random early rejection of requests that would exceed a newly "
|
126
|
-
"reduced MAX_CONCURRENT_STREAMS but are allowed by the current.";
|
127
|
-
const char* const additional_constraints_red_max_concurrent_streams = "{}";
|
128
93
|
const char* const description_registered_method_lookup_in_transport =
|
129
94
|
"Change registered method's lookup point to transport";
|
130
95
|
const char* const additional_constraints_registered_method_lookup_in_transport =
|
131
96
|
"{}";
|
97
|
+
const char* const description_promise_based_inproc_transport =
|
98
|
+
"Use promises for the in-process transport.";
|
99
|
+
const char* const additional_constraints_promise_based_inproc_transport = "{}";
|
100
|
+
const uint8_t required_experiments_promise_based_inproc_transport[] = {
|
101
|
+
static_cast<uint8_t>(grpc_core::kExperimentIdPromiseBasedClientCall),
|
102
|
+
static_cast<uint8_t>(grpc_core::kExperimentIdPromiseBasedServerCall),
|
103
|
+
static_cast<uint8_t>(
|
104
|
+
grpc_core::kExperimentIdRegisteredMethodLookupInTransport)};
|
132
105
|
const char* const description_registered_methods_map =
|
133
106
|
"Use absl::flat_hash_map for registered methods.";
|
134
107
|
const char* const additional_constraints_registered_methods_map = "{}";
|
@@ -150,20 +123,8 @@ const char* const description_schedule_cancellation_over_write =
|
|
150
123
|
"Allow cancellation op to be scheduled over a write";
|
151
124
|
const char* const additional_constraints_schedule_cancellation_over_write =
|
152
125
|
"{}";
|
153
|
-
const char* const description_separate_ping_from_keepalive =
|
154
|
-
"Keep a different keepalive timeout (resolution is seeing data after "
|
155
|
-
"sending a ping) from a ping timeout (resolution is getting a ping ack "
|
156
|
-
"after sending a ping) The first can be short and determines liveness. The "
|
157
|
-
"second can be longer and determines protocol correctness.";
|
158
|
-
const char* const additional_constraints_separate_ping_from_keepalive = "{}";
|
159
126
|
const char* const description_server_privacy = "If set, server privacy";
|
160
127
|
const char* const additional_constraints_server_privacy = "{}";
|
161
|
-
const char* const description_settings_timeout =
|
162
|
-
"If set, use the settings timeout to send settings frame to the peer.";
|
163
|
-
const char* const additional_constraints_settings_timeout = "{}";
|
164
|
-
const char* const description_tarpit =
|
165
|
-
"If set, tarpit invalid requests for some amount of time";
|
166
|
-
const char* const additional_constraints_tarpit = "{}";
|
167
128
|
const char* const description_tcp_frame_size_tuning =
|
168
129
|
"If set, enables TCP to use RPC size estimation made by higher layers. TCP "
|
169
130
|
"would not indicate completion of a read operation until a specified "
|
@@ -180,10 +141,18 @@ const char* const description_unconstrained_max_quota_buffer_size =
|
|
180
141
|
"Discard the cap on the max free pool size for one memory allocator";
|
181
142
|
const char* const additional_constraints_unconstrained_max_quota_buffer_size =
|
182
143
|
"{}";
|
183
|
-
const char* const
|
184
|
-
"
|
185
|
-
|
186
|
-
const char* const
|
144
|
+
const char* const description_v3_backend_metric_filter =
|
145
|
+
"Use the backend metric filter utilizing the v3 filter api";
|
146
|
+
const char* const additional_constraints_v3_backend_metric_filter = "{}";
|
147
|
+
const char* const description_v3_channel_idle_filters =
|
148
|
+
"Use the v3 filter API version of the idle filters.";
|
149
|
+
const char* const additional_constraints_v3_channel_idle_filters = "{}";
|
150
|
+
const char* const description_v3_compression_filter =
|
151
|
+
"Use the compression filter utilizing the v3 filter api";
|
152
|
+
const char* const additional_constraints_v3_compression_filter = "{}";
|
153
|
+
const char* const description_v3_server_auth_filter =
|
154
|
+
"Use the server auth filter utilizing the v3 filter api";
|
155
|
+
const char* const additional_constraints_v3_server_auth_filter = "{}";
|
187
156
|
const char* const description_work_serializer_clears_time_cache =
|
188
157
|
"Have the work serializer clear the time cache when it dispatches work.";
|
189
158
|
const char* const additional_constraints_work_serializer_clears_time_cache =
|
@@ -193,12 +162,14 @@ const char* const description_work_serializer_dispatch =
|
|
193
162
|
"callback, instead of running things inline in the first thread that "
|
194
163
|
"successfully enqueues work.";
|
195
164
|
const char* const additional_constraints_work_serializer_dispatch = "{}";
|
196
|
-
const char* const description_write_size_cap =
|
197
|
-
"Limit outgoing writes proportional to the target write size";
|
198
|
-
const char* const additional_constraints_write_size_cap = "{}";
|
199
165
|
const char* const description_write_size_policy =
|
200
166
|
"Try to size writes such that they don't create too large of a backlog";
|
201
167
|
const char* const additional_constraints_write_size_policy = "{}";
|
168
|
+
const char* const description_write_size_cap =
|
169
|
+
"Limit outgoing writes proportional to the target write size";
|
170
|
+
const char* const additional_constraints_write_size_cap = "{}";
|
171
|
+
const uint8_t required_experiments_write_size_cap[] = {
|
172
|
+
static_cast<uint8_t>(grpc_core::kExperimentIdWriteSizePolicy)};
|
202
173
|
const char* const description_wrr_delegate_to_pick_first =
|
203
174
|
"Change WRR code to delegate to pick_first as per dualstack backend "
|
204
175
|
"design.";
|
@@ -208,120 +179,106 @@ const char* const additional_constraints_wrr_delegate_to_pick_first = "{}";
|
|
208
179
|
namespace grpc_core {
|
209
180
|
|
210
181
|
const ExperimentMetadata g_experiment_metadata[] = {
|
211
|
-
{"block_excessive_requests_before_settings_ack",
|
212
|
-
description_block_excessive_requests_before_settings_ack,
|
213
|
-
additional_constraints_block_excessive_requests_before_settings_ack, true,
|
214
|
-
true},
|
215
182
|
{"call_status_override_on_cancellation",
|
216
183
|
description_call_status_override_on_cancellation,
|
217
|
-
additional_constraints_call_status_override_on_cancellation,
|
184
|
+
additional_constraints_call_status_override_on_cancellation, nullptr, 0,
|
185
|
+
false, true},
|
218
186
|
{"canary_client_privacy", description_canary_client_privacy,
|
219
|
-
additional_constraints_canary_client_privacy, false, false},
|
220
|
-
{"chttp2_batch_requests", description_chttp2_batch_requests,
|
221
|
-
additional_constraints_chttp2_batch_requests, true, true},
|
222
|
-
{"chttp2_offload_on_rst_stream", description_chttp2_offload_on_rst_stream,
|
223
|
-
additional_constraints_chttp2_offload_on_rst_stream, true, true},
|
187
|
+
additional_constraints_canary_client_privacy, nullptr, 0, false, false},
|
224
188
|
{"client_idleness", description_client_idleness,
|
225
|
-
additional_constraints_client_idleness, true, true},
|
189
|
+
additional_constraints_client_idleness, nullptr, 0, true, true},
|
226
190
|
{"client_privacy", description_client_privacy,
|
227
|
-
additional_constraints_client_privacy, false, false},
|
228
|
-
{"combiner_offload_to_event_engine",
|
229
|
-
description_combiner_offload_to_event_engine,
|
230
|
-
additional_constraints_combiner_offload_to_event_engine, true, true},
|
191
|
+
additional_constraints_client_privacy, nullptr, 0, false, false},
|
231
192
|
{"event_engine_client", description_event_engine_client,
|
232
|
-
additional_constraints_event_engine_client, false, true},
|
193
|
+
additional_constraints_event_engine_client, nullptr, 0, false, true},
|
233
194
|
{"event_engine_dns", description_event_engine_dns,
|
234
|
-
additional_constraints_event_engine_dns, false, false},
|
195
|
+
additional_constraints_event_engine_dns, nullptr, 0, false, false},
|
235
196
|
{"event_engine_listener", description_event_engine_listener,
|
236
|
-
additional_constraints_event_engine_listener, false, true},
|
197
|
+
additional_constraints_event_engine_listener, nullptr, 0, false, true},
|
237
198
|
{"free_large_allocator", description_free_large_allocator,
|
238
|
-
additional_constraints_free_large_allocator, false, true},
|
199
|
+
additional_constraints_free_large_allocator, nullptr, 0, false, true},
|
239
200
|
{"http2_stats_fix", description_http2_stats_fix,
|
240
|
-
additional_constraints_http2_stats_fix, true, true},
|
201
|
+
additional_constraints_http2_stats_fix, nullptr, 0, true, true},
|
241
202
|
{"keepalive_fix", description_keepalive_fix,
|
242
|
-
additional_constraints_keepalive_fix, false, false},
|
203
|
+
additional_constraints_keepalive_fix, nullptr, 0, false, false},
|
243
204
|
{"keepalive_server_fix", description_keepalive_server_fix,
|
244
|
-
additional_constraints_keepalive_server_fix, false, false},
|
245
|
-
{"lazier_stream_updates", description_lazier_stream_updates,
|
246
|
-
additional_constraints_lazier_stream_updates, true, true},
|
247
|
-
{"memory_pressure_controller", description_memory_pressure_controller,
|
248
|
-
additional_constraints_memory_pressure_controller, false, true},
|
205
|
+
additional_constraints_keepalive_server_fix, nullptr, 0, false, false},
|
249
206
|
{"monitoring_experiment", description_monitoring_experiment,
|
250
|
-
additional_constraints_monitoring_experiment, true, true},
|
207
|
+
additional_constraints_monitoring_experiment, nullptr, 0, true, true},
|
251
208
|
{"multiping", description_multiping, additional_constraints_multiping,
|
252
|
-
false, true},
|
253
|
-
{"overload_protection", description_overload_protection,
|
254
|
-
additional_constraints_overload_protection, true, true},
|
209
|
+
nullptr, 0, false, true},
|
255
210
|
{"peer_state_based_framing", description_peer_state_based_framing,
|
256
|
-
additional_constraints_peer_state_based_framing, false, true},
|
211
|
+
additional_constraints_peer_state_based_framing, nullptr, 0, false, true},
|
257
212
|
{"pending_queue_cap", description_pending_queue_cap,
|
258
|
-
additional_constraints_pending_queue_cap, true, true},
|
213
|
+
additional_constraints_pending_queue_cap, nullptr, 0, true, true},
|
259
214
|
{"pick_first_happy_eyeballs", description_pick_first_happy_eyeballs,
|
260
|
-
additional_constraints_pick_first_happy_eyeballs, true, true},
|
261
|
-
{"ping_on_rst_stream", description_ping_on_rst_stream,
|
262
|
-
additional_constraints_ping_on_rst_stream, true, true},
|
215
|
+
additional_constraints_pick_first_happy_eyeballs, nullptr, 0, true, true},
|
263
216
|
{"promise_based_client_call", description_promise_based_client_call,
|
264
|
-
additional_constraints_promise_based_client_call, false, true},
|
265
|
-
{"promise_based_inproc_transport",
|
266
|
-
description_promise_based_inproc_transport,
|
267
|
-
additional_constraints_promise_based_inproc_transport, false, false},
|
217
|
+
additional_constraints_promise_based_client_call, nullptr, 0, false, true},
|
268
218
|
{"promise_based_server_call", description_promise_based_server_call,
|
269
|
-
additional_constraints_promise_based_server_call, false, true},
|
270
|
-
{"red_max_concurrent_streams", description_red_max_concurrent_streams,
|
271
|
-
additional_constraints_red_max_concurrent_streams, false, true},
|
219
|
+
additional_constraints_promise_based_server_call, nullptr, 0, false, true},
|
272
220
|
{"registered_method_lookup_in_transport",
|
273
221
|
description_registered_method_lookup_in_transport,
|
274
|
-
additional_constraints_registered_method_lookup_in_transport,
|
222
|
+
additional_constraints_registered_method_lookup_in_transport, nullptr, 0,
|
223
|
+
true, true},
|
224
|
+
{"promise_based_inproc_transport",
|
225
|
+
description_promise_based_inproc_transport,
|
226
|
+
additional_constraints_promise_based_inproc_transport,
|
227
|
+
required_experiments_promise_based_inproc_transport, 3, false, false},
|
275
228
|
{"registered_methods_map", description_registered_methods_map,
|
276
|
-
additional_constraints_registered_methods_map, false, true},
|
229
|
+
additional_constraints_registered_methods_map, nullptr, 0, false, true},
|
277
230
|
{"rfc_max_concurrent_streams", description_rfc_max_concurrent_streams,
|
278
|
-
additional_constraints_rfc_max_concurrent_streams,
|
231
|
+
additional_constraints_rfc_max_concurrent_streams, nullptr, 0, false,
|
232
|
+
true},
|
279
233
|
{"round_robin_delegate_to_pick_first",
|
280
234
|
description_round_robin_delegate_to_pick_first,
|
281
|
-
additional_constraints_round_robin_delegate_to_pick_first,
|
282
|
-
|
235
|
+
additional_constraints_round_robin_delegate_to_pick_first, nullptr, 0,
|
236
|
+
true, true},
|
237
|
+
{"rstpit", description_rstpit, additional_constraints_rstpit, nullptr, 0,
|
238
|
+
false, true},
|
283
239
|
{"schedule_cancellation_over_write",
|
284
240
|
description_schedule_cancellation_over_write,
|
285
|
-
additional_constraints_schedule_cancellation_over_write,
|
286
|
-
|
287
|
-
additional_constraints_separate_ping_from_keepalive, true, true},
|
241
|
+
additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
|
242
|
+
true},
|
288
243
|
{"server_privacy", description_server_privacy,
|
289
|
-
additional_constraints_server_privacy, false, false},
|
290
|
-
{"settings_timeout", description_settings_timeout,
|
291
|
-
additional_constraints_settings_timeout, true, true},
|
292
|
-
{"tarpit", description_tarpit, additional_constraints_tarpit, true, true},
|
244
|
+
additional_constraints_server_privacy, nullptr, 0, false, false},
|
293
245
|
{"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
|
294
|
-
additional_constraints_tcp_frame_size_tuning, false, true},
|
246
|
+
additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
|
295
247
|
{"tcp_rcv_lowat", description_tcp_rcv_lowat,
|
296
|
-
additional_constraints_tcp_rcv_lowat, false, true},
|
248
|
+
additional_constraints_tcp_rcv_lowat, nullptr, 0, false, true},
|
297
249
|
{"trace_record_callops", description_trace_record_callops,
|
298
|
-
additional_constraints_trace_record_callops, false, true},
|
250
|
+
additional_constraints_trace_record_callops, nullptr, 0, false, true},
|
299
251
|
{"unconstrained_max_quota_buffer_size",
|
300
252
|
description_unconstrained_max_quota_buffer_size,
|
301
|
-
additional_constraints_unconstrained_max_quota_buffer_size,
|
302
|
-
|
303
|
-
|
253
|
+
additional_constraints_unconstrained_max_quota_buffer_size, nullptr, 0,
|
254
|
+
false, true},
|
255
|
+
{"v3_backend_metric_filter", description_v3_backend_metric_filter,
|
256
|
+
additional_constraints_v3_backend_metric_filter, nullptr, 0, false, true},
|
257
|
+
{"v3_channel_idle_filters", description_v3_channel_idle_filters,
|
258
|
+
additional_constraints_v3_channel_idle_filters, nullptr, 0, false, true},
|
259
|
+
{"v3_compression_filter", description_v3_compression_filter,
|
260
|
+
additional_constraints_v3_compression_filter, nullptr, 0, false, true},
|
261
|
+
{"v3_server_auth_filter", description_v3_server_auth_filter,
|
262
|
+
additional_constraints_v3_server_auth_filter, nullptr, 0, false, true},
|
304
263
|
{"work_serializer_clears_time_cache",
|
305
264
|
description_work_serializer_clears_time_cache,
|
306
|
-
additional_constraints_work_serializer_clears_time_cache,
|
265
|
+
additional_constraints_work_serializer_clears_time_cache, nullptr, 0, true,
|
266
|
+
true},
|
307
267
|
{"work_serializer_dispatch", description_work_serializer_dispatch,
|
308
|
-
additional_constraints_work_serializer_dispatch, false, true},
|
309
|
-
{"write_size_cap", description_write_size_cap,
|
310
|
-
additional_constraints_write_size_cap, true, true},
|
268
|
+
additional_constraints_work_serializer_dispatch, nullptr, 0, false, true},
|
311
269
|
{"write_size_policy", description_write_size_policy,
|
312
|
-
additional_constraints_write_size_policy, true, true},
|
270
|
+
additional_constraints_write_size_policy, nullptr, 0, true, true},
|
271
|
+
{"write_size_cap", description_write_size_cap,
|
272
|
+
additional_constraints_write_size_cap, required_experiments_write_size_cap,
|
273
|
+
1, true, true},
|
313
274
|
{"wrr_delegate_to_pick_first", description_wrr_delegate_to_pick_first,
|
314
|
-
additional_constraints_wrr_delegate_to_pick_first, true, true},
|
275
|
+
additional_constraints_wrr_delegate_to_pick_first, nullptr, 0, true, true},
|
315
276
|
};
|
316
277
|
|
317
278
|
} // namespace grpc_core
|
318
279
|
|
319
280
|
#elif defined(GPR_WINDOWS)
|
320
281
|
namespace {
|
321
|
-
const char* const description_block_excessive_requests_before_settings_ack =
|
322
|
-
"If set, block excessive requests before receiving SETTINGS ACK.";
|
323
|
-
const char* const
|
324
|
-
additional_constraints_block_excessive_requests_before_settings_ack = "{}";
|
325
282
|
const char* const description_call_status_override_on_cancellation =
|
326
283
|
"Avoid overriding call status of successfully finished calls if it races "
|
327
284
|
"with cancellation.";
|
@@ -330,22 +287,11 @@ const char* const additional_constraints_call_status_override_on_cancellation =
|
|
330
287
|
const char* const description_canary_client_privacy =
|
331
288
|
"If set, canary client privacy";
|
332
289
|
const char* const additional_constraints_canary_client_privacy = "{}";
|
333
|
-
const char* const description_chttp2_batch_requests =
|
334
|
-
"Cap the number of requests received by one transport read prior to "
|
335
|
-
"offload.";
|
336
|
-
const char* const additional_constraints_chttp2_batch_requests = "{}";
|
337
|
-
const char* const description_chttp2_offload_on_rst_stream =
|
338
|
-
"Offload work on RST_STREAM.";
|
339
|
-
const char* const additional_constraints_chttp2_offload_on_rst_stream = "{}";
|
340
290
|
const char* const description_client_idleness =
|
341
291
|
"If enabled, client channel idleness is enabled by default.";
|
342
292
|
const char* const additional_constraints_client_idleness = "{}";
|
343
293
|
const char* const description_client_privacy = "If set, client privacy";
|
344
294
|
const char* const additional_constraints_client_privacy = "{}";
|
345
|
-
const char* const description_combiner_offload_to_event_engine =
|
346
|
-
"Offload Combiner work onto the EventEngine instead of the Executor.";
|
347
|
-
const char* const additional_constraints_combiner_offload_to_event_engine =
|
348
|
-
"{}";
|
349
295
|
const char* const description_event_engine_client =
|
350
296
|
"Use EventEngine clients instead of iomgr's grpc_tcp_client";
|
351
297
|
const char* const additional_constraints_event_engine_client = "{}";
|
@@ -369,23 +315,12 @@ const char* const description_keepalive_server_fix =
|
|
369
315
|
"Allows overriding keepalive_permit_without_calls for servers. Refer "
|
370
316
|
"https://github.com/grpc/grpc/pull/33917 for more information.";
|
371
317
|
const char* const additional_constraints_keepalive_server_fix = "{}";
|
372
|
-
const char* const description_lazier_stream_updates =
|
373
|
-
"Allow streams to consume up to 50% of the incoming window before we force "
|
374
|
-
"send a flow control update.";
|
375
|
-
const char* const additional_constraints_lazier_stream_updates = "{}";
|
376
|
-
const char* const description_memory_pressure_controller =
|
377
|
-
"New memory pressure controller";
|
378
|
-
const char* const additional_constraints_memory_pressure_controller = "{}";
|
379
318
|
const char* const description_monitoring_experiment =
|
380
319
|
"Placeholder experiment to prove/disprove our monitoring is working";
|
381
320
|
const char* const additional_constraints_monitoring_experiment = "{}";
|
382
321
|
const char* const description_multiping =
|
383
322
|
"Allow more than one ping to be in flight at a time by default.";
|
384
323
|
const char* const additional_constraints_multiping = "{}";
|
385
|
-
const char* const description_overload_protection =
|
386
|
-
"If chttp2 has more streams than it can handle open, send RST_STREAM "
|
387
|
-
"immediately on new streams appearing.";
|
388
|
-
const char* const additional_constraints_overload_protection = "{}";
|
389
324
|
const char* const description_peer_state_based_framing =
|
390
325
|
"If set, the max sizes of frames sent to lower layers is controlled based "
|
391
326
|
"on the peer's memory pressure which is reflected in its max http2 frame "
|
@@ -402,29 +337,26 @@ const char* const additional_constraints_pending_queue_cap = "{}";
|
|
402
337
|
const char* const description_pick_first_happy_eyeballs =
|
403
338
|
"Use Happy Eyeballs in pick_first.";
|
404
339
|
const char* const additional_constraints_pick_first_happy_eyeballs = "{}";
|
405
|
-
const char* const description_ping_on_rst_stream =
|
406
|
-
"Send a ping on receiving some RST_STREAM frames on the server (proportion "
|
407
|
-
"configurable via grpc.http2.ping_on_rst_stream_percent channel arg).";
|
408
|
-
const char* const additional_constraints_ping_on_rst_stream = "{}";
|
409
340
|
const char* const description_promise_based_client_call =
|
410
341
|
"If set, use the new gRPC promise based call code when it's appropriate "
|
411
342
|
"(ie when all filters in a stack are promise based)";
|
412
343
|
const char* const additional_constraints_promise_based_client_call = "{}";
|
413
|
-
const char* const description_promise_based_inproc_transport =
|
414
|
-
"Use promises for the in-process transport.";
|
415
|
-
const char* const additional_constraints_promise_based_inproc_transport = "{}";
|
416
344
|
const char* const description_promise_based_server_call =
|
417
345
|
"If set, use the new gRPC promise based call code when it's appropriate "
|
418
346
|
"(ie when all filters in a stack are promise based)";
|
419
347
|
const char* const additional_constraints_promise_based_server_call = "{}";
|
420
|
-
const char* const description_red_max_concurrent_streams =
|
421
|
-
"Perform random early rejection of requests that would exceed a newly "
|
422
|
-
"reduced MAX_CONCURRENT_STREAMS but are allowed by the current.";
|
423
|
-
const char* const additional_constraints_red_max_concurrent_streams = "{}";
|
424
348
|
const char* const description_registered_method_lookup_in_transport =
|
425
349
|
"Change registered method's lookup point to transport";
|
426
350
|
const char* const additional_constraints_registered_method_lookup_in_transport =
|
427
351
|
"{}";
|
352
|
+
const char* const description_promise_based_inproc_transport =
|
353
|
+
"Use promises for the in-process transport.";
|
354
|
+
const char* const additional_constraints_promise_based_inproc_transport = "{}";
|
355
|
+
const uint8_t required_experiments_promise_based_inproc_transport[] = {
|
356
|
+
static_cast<uint8_t>(grpc_core::kExperimentIdPromiseBasedClientCall),
|
357
|
+
static_cast<uint8_t>(grpc_core::kExperimentIdPromiseBasedServerCall),
|
358
|
+
static_cast<uint8_t>(
|
359
|
+
grpc_core::kExperimentIdRegisteredMethodLookupInTransport)};
|
428
360
|
const char* const description_registered_methods_map =
|
429
361
|
"Use absl::flat_hash_map for registered methods.";
|
430
362
|
const char* const additional_constraints_registered_methods_map = "{}";
|
@@ -446,20 +378,8 @@ const char* const description_schedule_cancellation_over_write =
|
|
446
378
|
"Allow cancellation op to be scheduled over a write";
|
447
379
|
const char* const additional_constraints_schedule_cancellation_over_write =
|
448
380
|
"{}";
|
449
|
-
const char* const description_separate_ping_from_keepalive =
|
450
|
-
"Keep a different keepalive timeout (resolution is seeing data after "
|
451
|
-
"sending a ping) from a ping timeout (resolution is getting a ping ack "
|
452
|
-
"after sending a ping) The first can be short and determines liveness. The "
|
453
|
-
"second can be longer and determines protocol correctness.";
|
454
|
-
const char* const additional_constraints_separate_ping_from_keepalive = "{}";
|
455
381
|
const char* const description_server_privacy = "If set, server privacy";
|
456
382
|
const char* const additional_constraints_server_privacy = "{}";
|
457
|
-
const char* const description_settings_timeout =
|
458
|
-
"If set, use the settings timeout to send settings frame to the peer.";
|
459
|
-
const char* const additional_constraints_settings_timeout = "{}";
|
460
|
-
const char* const description_tarpit =
|
461
|
-
"If set, tarpit invalid requests for some amount of time";
|
462
|
-
const char* const additional_constraints_tarpit = "{}";
|
463
383
|
const char* const description_tcp_frame_size_tuning =
|
464
384
|
"If set, enables TCP to use RPC size estimation made by higher layers. TCP "
|
465
385
|
"would not indicate completion of a read operation until a specified "
|
@@ -476,10 +396,18 @@ const char* const description_unconstrained_max_quota_buffer_size =
|
|
476
396
|
"Discard the cap on the max free pool size for one memory allocator";
|
477
397
|
const char* const additional_constraints_unconstrained_max_quota_buffer_size =
|
478
398
|
"{}";
|
479
|
-
const char* const
|
480
|
-
"
|
481
|
-
|
482
|
-
const char* const
|
399
|
+
const char* const description_v3_backend_metric_filter =
|
400
|
+
"Use the backend metric filter utilizing the v3 filter api";
|
401
|
+
const char* const additional_constraints_v3_backend_metric_filter = "{}";
|
402
|
+
const char* const description_v3_channel_idle_filters =
|
403
|
+
"Use the v3 filter API version of the idle filters.";
|
404
|
+
const char* const additional_constraints_v3_channel_idle_filters = "{}";
|
405
|
+
const char* const description_v3_compression_filter =
|
406
|
+
"Use the compression filter utilizing the v3 filter api";
|
407
|
+
const char* const additional_constraints_v3_compression_filter = "{}";
|
408
|
+
const char* const description_v3_server_auth_filter =
|
409
|
+
"Use the server auth filter utilizing the v3 filter api";
|
410
|
+
const char* const additional_constraints_v3_server_auth_filter = "{}";
|
483
411
|
const char* const description_work_serializer_clears_time_cache =
|
484
412
|
"Have the work serializer clear the time cache when it dispatches work.";
|
485
413
|
const char* const additional_constraints_work_serializer_clears_time_cache =
|
@@ -489,12 +417,14 @@ const char* const description_work_serializer_dispatch =
|
|
489
417
|
"callback, instead of running things inline in the first thread that "
|
490
418
|
"successfully enqueues work.";
|
491
419
|
const char* const additional_constraints_work_serializer_dispatch = "{}";
|
492
|
-
const char* const description_write_size_cap =
|
493
|
-
"Limit outgoing writes proportional to the target write size";
|
494
|
-
const char* const additional_constraints_write_size_cap = "{}";
|
495
420
|
const char* const description_write_size_policy =
|
496
421
|
"Try to size writes such that they don't create too large of a backlog";
|
497
422
|
const char* const additional_constraints_write_size_policy = "{}";
|
423
|
+
const char* const description_write_size_cap =
|
424
|
+
"Limit outgoing writes proportional to the target write size";
|
425
|
+
const char* const additional_constraints_write_size_cap = "{}";
|
426
|
+
const uint8_t required_experiments_write_size_cap[] = {
|
427
|
+
static_cast<uint8_t>(grpc_core::kExperimentIdWriteSizePolicy)};
|
498
428
|
const char* const description_wrr_delegate_to_pick_first =
|
499
429
|
"Change WRR code to delegate to pick_first as per dualstack backend "
|
500
430
|
"design.";
|
@@ -504,120 +434,106 @@ const char* const additional_constraints_wrr_delegate_to_pick_first = "{}";
|
|
504
434
|
namespace grpc_core {
|
505
435
|
|
506
436
|
const ExperimentMetadata g_experiment_metadata[] = {
|
507
|
-
{"block_excessive_requests_before_settings_ack",
|
508
|
-
description_block_excessive_requests_before_settings_ack,
|
509
|
-
additional_constraints_block_excessive_requests_before_settings_ack, true,
|
510
|
-
true},
|
511
437
|
{"call_status_override_on_cancellation",
|
512
438
|
description_call_status_override_on_cancellation,
|
513
|
-
additional_constraints_call_status_override_on_cancellation,
|
439
|
+
additional_constraints_call_status_override_on_cancellation, nullptr, 0,
|
440
|
+
false, true},
|
514
441
|
{"canary_client_privacy", description_canary_client_privacy,
|
515
|
-
additional_constraints_canary_client_privacy, false, false},
|
516
|
-
{"chttp2_batch_requests", description_chttp2_batch_requests,
|
517
|
-
additional_constraints_chttp2_batch_requests, true, true},
|
518
|
-
{"chttp2_offload_on_rst_stream", description_chttp2_offload_on_rst_stream,
|
519
|
-
additional_constraints_chttp2_offload_on_rst_stream, true, true},
|
442
|
+
additional_constraints_canary_client_privacy, nullptr, 0, false, false},
|
520
443
|
{"client_idleness", description_client_idleness,
|
521
|
-
additional_constraints_client_idleness, true, true},
|
444
|
+
additional_constraints_client_idleness, nullptr, 0, true, true},
|
522
445
|
{"client_privacy", description_client_privacy,
|
523
|
-
additional_constraints_client_privacy, false, false},
|
524
|
-
{"combiner_offload_to_event_engine",
|
525
|
-
description_combiner_offload_to_event_engine,
|
526
|
-
additional_constraints_combiner_offload_to_event_engine, true, true},
|
446
|
+
additional_constraints_client_privacy, nullptr, 0, false, false},
|
527
447
|
{"event_engine_client", description_event_engine_client,
|
528
|
-
additional_constraints_event_engine_client, false, true},
|
448
|
+
additional_constraints_event_engine_client, nullptr, 0, false, true},
|
529
449
|
{"event_engine_dns", description_event_engine_dns,
|
530
|
-
additional_constraints_event_engine_dns, false, false},
|
450
|
+
additional_constraints_event_engine_dns, nullptr, 0, false, false},
|
531
451
|
{"event_engine_listener", description_event_engine_listener,
|
532
|
-
additional_constraints_event_engine_listener, true, true},
|
452
|
+
additional_constraints_event_engine_listener, nullptr, 0, true, true},
|
533
453
|
{"free_large_allocator", description_free_large_allocator,
|
534
|
-
additional_constraints_free_large_allocator, false, true},
|
454
|
+
additional_constraints_free_large_allocator, nullptr, 0, false, true},
|
535
455
|
{"http2_stats_fix", description_http2_stats_fix,
|
536
|
-
additional_constraints_http2_stats_fix, true, true},
|
456
|
+
additional_constraints_http2_stats_fix, nullptr, 0, true, true},
|
537
457
|
{"keepalive_fix", description_keepalive_fix,
|
538
|
-
additional_constraints_keepalive_fix, false, false},
|
458
|
+
additional_constraints_keepalive_fix, nullptr, 0, false, false},
|
539
459
|
{"keepalive_server_fix", description_keepalive_server_fix,
|
540
|
-
additional_constraints_keepalive_server_fix, false, false},
|
541
|
-
{"lazier_stream_updates", description_lazier_stream_updates,
|
542
|
-
additional_constraints_lazier_stream_updates, true, true},
|
543
|
-
{"memory_pressure_controller", description_memory_pressure_controller,
|
544
|
-
additional_constraints_memory_pressure_controller, false, true},
|
460
|
+
additional_constraints_keepalive_server_fix, nullptr, 0, false, false},
|
545
461
|
{"monitoring_experiment", description_monitoring_experiment,
|
546
|
-
additional_constraints_monitoring_experiment, true, true},
|
462
|
+
additional_constraints_monitoring_experiment, nullptr, 0, true, true},
|
547
463
|
{"multiping", description_multiping, additional_constraints_multiping,
|
548
|
-
false, true},
|
549
|
-
{"overload_protection", description_overload_protection,
|
550
|
-
additional_constraints_overload_protection, true, true},
|
464
|
+
nullptr, 0, false, true},
|
551
465
|
{"peer_state_based_framing", description_peer_state_based_framing,
|
552
|
-
additional_constraints_peer_state_based_framing, false, true},
|
466
|
+
additional_constraints_peer_state_based_framing, nullptr, 0, false, true},
|
553
467
|
{"pending_queue_cap", description_pending_queue_cap,
|
554
|
-
additional_constraints_pending_queue_cap, true, true},
|
468
|
+
additional_constraints_pending_queue_cap, nullptr, 0, true, true},
|
555
469
|
{"pick_first_happy_eyeballs", description_pick_first_happy_eyeballs,
|
556
|
-
additional_constraints_pick_first_happy_eyeballs, true, true},
|
557
|
-
{"ping_on_rst_stream", description_ping_on_rst_stream,
|
558
|
-
additional_constraints_ping_on_rst_stream, true, true},
|
470
|
+
additional_constraints_pick_first_happy_eyeballs, nullptr, 0, true, true},
|
559
471
|
{"promise_based_client_call", description_promise_based_client_call,
|
560
|
-
additional_constraints_promise_based_client_call, false, true},
|
561
|
-
{"promise_based_inproc_transport",
|
562
|
-
description_promise_based_inproc_transport,
|
563
|
-
additional_constraints_promise_based_inproc_transport, false, false},
|
472
|
+
additional_constraints_promise_based_client_call, nullptr, 0, false, true},
|
564
473
|
{"promise_based_server_call", description_promise_based_server_call,
|
565
|
-
additional_constraints_promise_based_server_call, false, true},
|
566
|
-
{"red_max_concurrent_streams", description_red_max_concurrent_streams,
|
567
|
-
additional_constraints_red_max_concurrent_streams, false, true},
|
474
|
+
additional_constraints_promise_based_server_call, nullptr, 0, false, true},
|
568
475
|
{"registered_method_lookup_in_transport",
|
569
476
|
description_registered_method_lookup_in_transport,
|
570
|
-
additional_constraints_registered_method_lookup_in_transport,
|
477
|
+
additional_constraints_registered_method_lookup_in_transport, nullptr, 0,
|
478
|
+
true, true},
|
479
|
+
{"promise_based_inproc_transport",
|
480
|
+
description_promise_based_inproc_transport,
|
481
|
+
additional_constraints_promise_based_inproc_transport,
|
482
|
+
required_experiments_promise_based_inproc_transport, 3, false, false},
|
571
483
|
{"registered_methods_map", description_registered_methods_map,
|
572
|
-
additional_constraints_registered_methods_map, false, true},
|
484
|
+
additional_constraints_registered_methods_map, nullptr, 0, false, true},
|
573
485
|
{"rfc_max_concurrent_streams", description_rfc_max_concurrent_streams,
|
574
|
-
additional_constraints_rfc_max_concurrent_streams,
|
486
|
+
additional_constraints_rfc_max_concurrent_streams, nullptr, 0, false,
|
487
|
+
true},
|
575
488
|
{"round_robin_delegate_to_pick_first",
|
576
489
|
description_round_robin_delegate_to_pick_first,
|
577
|
-
additional_constraints_round_robin_delegate_to_pick_first,
|
578
|
-
|
490
|
+
additional_constraints_round_robin_delegate_to_pick_first, nullptr, 0,
|
491
|
+
true, true},
|
492
|
+
{"rstpit", description_rstpit, additional_constraints_rstpit, nullptr, 0,
|
493
|
+
false, true},
|
579
494
|
{"schedule_cancellation_over_write",
|
580
495
|
description_schedule_cancellation_over_write,
|
581
|
-
additional_constraints_schedule_cancellation_over_write,
|
582
|
-
|
583
|
-
additional_constraints_separate_ping_from_keepalive, true, true},
|
496
|
+
additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
|
497
|
+
true},
|
584
498
|
{"server_privacy", description_server_privacy,
|
585
|
-
additional_constraints_server_privacy, false, false},
|
586
|
-
{"settings_timeout", description_settings_timeout,
|
587
|
-
additional_constraints_settings_timeout, true, true},
|
588
|
-
{"tarpit", description_tarpit, additional_constraints_tarpit, true, true},
|
499
|
+
additional_constraints_server_privacy, nullptr, 0, false, false},
|
589
500
|
{"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
|
590
|
-
additional_constraints_tcp_frame_size_tuning, false, true},
|
501
|
+
additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
|
591
502
|
{"tcp_rcv_lowat", description_tcp_rcv_lowat,
|
592
|
-
additional_constraints_tcp_rcv_lowat, false, true},
|
503
|
+
additional_constraints_tcp_rcv_lowat, nullptr, 0, false, true},
|
593
504
|
{"trace_record_callops", description_trace_record_callops,
|
594
|
-
additional_constraints_trace_record_callops, false, true},
|
505
|
+
additional_constraints_trace_record_callops, nullptr, 0, false, true},
|
595
506
|
{"unconstrained_max_quota_buffer_size",
|
596
507
|
description_unconstrained_max_quota_buffer_size,
|
597
|
-
additional_constraints_unconstrained_max_quota_buffer_size,
|
598
|
-
|
599
|
-
|
508
|
+
additional_constraints_unconstrained_max_quota_buffer_size, nullptr, 0,
|
509
|
+
false, true},
|
510
|
+
{"v3_backend_metric_filter", description_v3_backend_metric_filter,
|
511
|
+
additional_constraints_v3_backend_metric_filter, nullptr, 0, false, true},
|
512
|
+
{"v3_channel_idle_filters", description_v3_channel_idle_filters,
|
513
|
+
additional_constraints_v3_channel_idle_filters, nullptr, 0, false, true},
|
514
|
+
{"v3_compression_filter", description_v3_compression_filter,
|
515
|
+
additional_constraints_v3_compression_filter, nullptr, 0, false, true},
|
516
|
+
{"v3_server_auth_filter", description_v3_server_auth_filter,
|
517
|
+
additional_constraints_v3_server_auth_filter, nullptr, 0, false, true},
|
600
518
|
{"work_serializer_clears_time_cache",
|
601
519
|
description_work_serializer_clears_time_cache,
|
602
|
-
additional_constraints_work_serializer_clears_time_cache,
|
520
|
+
additional_constraints_work_serializer_clears_time_cache, nullptr, 0, true,
|
521
|
+
true},
|
603
522
|
{"work_serializer_dispatch", description_work_serializer_dispatch,
|
604
|
-
additional_constraints_work_serializer_dispatch, false, true},
|
605
|
-
{"write_size_cap", description_write_size_cap,
|
606
|
-
additional_constraints_write_size_cap, true, true},
|
523
|
+
additional_constraints_work_serializer_dispatch, nullptr, 0, false, true},
|
607
524
|
{"write_size_policy", description_write_size_policy,
|
608
|
-
additional_constraints_write_size_policy, true, true},
|
525
|
+
additional_constraints_write_size_policy, nullptr, 0, true, true},
|
526
|
+
{"write_size_cap", description_write_size_cap,
|
527
|
+
additional_constraints_write_size_cap, required_experiments_write_size_cap,
|
528
|
+
1, true, true},
|
609
529
|
{"wrr_delegate_to_pick_first", description_wrr_delegate_to_pick_first,
|
610
|
-
additional_constraints_wrr_delegate_to_pick_first, true, true},
|
530
|
+
additional_constraints_wrr_delegate_to_pick_first, nullptr, 0, true, true},
|
611
531
|
};
|
612
532
|
|
613
533
|
} // namespace grpc_core
|
614
534
|
|
615
535
|
#else
|
616
536
|
namespace {
|
617
|
-
const char* const description_block_excessive_requests_before_settings_ack =
|
618
|
-
"If set, block excessive requests before receiving SETTINGS ACK.";
|
619
|
-
const char* const
|
620
|
-
additional_constraints_block_excessive_requests_before_settings_ack = "{}";
|
621
537
|
const char* const description_call_status_override_on_cancellation =
|
622
538
|
"Avoid overriding call status of successfully finished calls if it races "
|
623
539
|
"with cancellation.";
|
@@ -626,22 +542,11 @@ const char* const additional_constraints_call_status_override_on_cancellation =
|
|
626
542
|
const char* const description_canary_client_privacy =
|
627
543
|
"If set, canary client privacy";
|
628
544
|
const char* const additional_constraints_canary_client_privacy = "{}";
|
629
|
-
const char* const description_chttp2_batch_requests =
|
630
|
-
"Cap the number of requests received by one transport read prior to "
|
631
|
-
"offload.";
|
632
|
-
const char* const additional_constraints_chttp2_batch_requests = "{}";
|
633
|
-
const char* const description_chttp2_offload_on_rst_stream =
|
634
|
-
"Offload work on RST_STREAM.";
|
635
|
-
const char* const additional_constraints_chttp2_offload_on_rst_stream = "{}";
|
636
545
|
const char* const description_client_idleness =
|
637
546
|
"If enabled, client channel idleness is enabled by default.";
|
638
547
|
const char* const additional_constraints_client_idleness = "{}";
|
639
548
|
const char* const description_client_privacy = "If set, client privacy";
|
640
549
|
const char* const additional_constraints_client_privacy = "{}";
|
641
|
-
const char* const description_combiner_offload_to_event_engine =
|
642
|
-
"Offload Combiner work onto the EventEngine instead of the Executor.";
|
643
|
-
const char* const additional_constraints_combiner_offload_to_event_engine =
|
644
|
-
"{}";
|
645
550
|
const char* const description_event_engine_client =
|
646
551
|
"Use EventEngine clients instead of iomgr's grpc_tcp_client";
|
647
552
|
const char* const additional_constraints_event_engine_client = "{}";
|
@@ -665,23 +570,12 @@ const char* const description_keepalive_server_fix =
|
|
665
570
|
"Allows overriding keepalive_permit_without_calls for servers. Refer "
|
666
571
|
"https://github.com/grpc/grpc/pull/33917 for more information.";
|
667
572
|
const char* const additional_constraints_keepalive_server_fix = "{}";
|
668
|
-
const char* const description_lazier_stream_updates =
|
669
|
-
"Allow streams to consume up to 50% of the incoming window before we force "
|
670
|
-
"send a flow control update.";
|
671
|
-
const char* const additional_constraints_lazier_stream_updates = "{}";
|
672
|
-
const char* const description_memory_pressure_controller =
|
673
|
-
"New memory pressure controller";
|
674
|
-
const char* const additional_constraints_memory_pressure_controller = "{}";
|
675
573
|
const char* const description_monitoring_experiment =
|
676
574
|
"Placeholder experiment to prove/disprove our monitoring is working";
|
677
575
|
const char* const additional_constraints_monitoring_experiment = "{}";
|
678
576
|
const char* const description_multiping =
|
679
577
|
"Allow more than one ping to be in flight at a time by default.";
|
680
578
|
const char* const additional_constraints_multiping = "{}";
|
681
|
-
const char* const description_overload_protection =
|
682
|
-
"If chttp2 has more streams than it can handle open, send RST_STREAM "
|
683
|
-
"immediately on new streams appearing.";
|
684
|
-
const char* const additional_constraints_overload_protection = "{}";
|
685
579
|
const char* const description_peer_state_based_framing =
|
686
580
|
"If set, the max sizes of frames sent to lower layers is controlled based "
|
687
581
|
"on the peer's memory pressure which is reflected in its max http2 frame "
|
@@ -698,29 +592,26 @@ const char* const additional_constraints_pending_queue_cap = "{}";
|
|
698
592
|
const char* const description_pick_first_happy_eyeballs =
|
699
593
|
"Use Happy Eyeballs in pick_first.";
|
700
594
|
const char* const additional_constraints_pick_first_happy_eyeballs = "{}";
|
701
|
-
const char* const description_ping_on_rst_stream =
|
702
|
-
"Send a ping on receiving some RST_STREAM frames on the server (proportion "
|
703
|
-
"configurable via grpc.http2.ping_on_rst_stream_percent channel arg).";
|
704
|
-
const char* const additional_constraints_ping_on_rst_stream = "{}";
|
705
595
|
const char* const description_promise_based_client_call =
|
706
596
|
"If set, use the new gRPC promise based call code when it's appropriate "
|
707
597
|
"(ie when all filters in a stack are promise based)";
|
708
598
|
const char* const additional_constraints_promise_based_client_call = "{}";
|
709
|
-
const char* const description_promise_based_inproc_transport =
|
710
|
-
"Use promises for the in-process transport.";
|
711
|
-
const char* const additional_constraints_promise_based_inproc_transport = "{}";
|
712
599
|
const char* const description_promise_based_server_call =
|
713
600
|
"If set, use the new gRPC promise based call code when it's appropriate "
|
714
601
|
"(ie when all filters in a stack are promise based)";
|
715
602
|
const char* const additional_constraints_promise_based_server_call = "{}";
|
716
|
-
const char* const description_red_max_concurrent_streams =
|
717
|
-
"Perform random early rejection of requests that would exceed a newly "
|
718
|
-
"reduced MAX_CONCURRENT_STREAMS but are allowed by the current.";
|
719
|
-
const char* const additional_constraints_red_max_concurrent_streams = "{}";
|
720
603
|
const char* const description_registered_method_lookup_in_transport =
|
721
604
|
"Change registered method's lookup point to transport";
|
722
605
|
const char* const additional_constraints_registered_method_lookup_in_transport =
|
723
606
|
"{}";
|
607
|
+
const char* const description_promise_based_inproc_transport =
|
608
|
+
"Use promises for the in-process transport.";
|
609
|
+
const char* const additional_constraints_promise_based_inproc_transport = "{}";
|
610
|
+
const uint8_t required_experiments_promise_based_inproc_transport[] = {
|
611
|
+
static_cast<uint8_t>(grpc_core::kExperimentIdPromiseBasedClientCall),
|
612
|
+
static_cast<uint8_t>(grpc_core::kExperimentIdPromiseBasedServerCall),
|
613
|
+
static_cast<uint8_t>(
|
614
|
+
grpc_core::kExperimentIdRegisteredMethodLookupInTransport)};
|
724
615
|
const char* const description_registered_methods_map =
|
725
616
|
"Use absl::flat_hash_map for registered methods.";
|
726
617
|
const char* const additional_constraints_registered_methods_map = "{}";
|
@@ -742,20 +633,8 @@ const char* const description_schedule_cancellation_over_write =
|
|
742
633
|
"Allow cancellation op to be scheduled over a write";
|
743
634
|
const char* const additional_constraints_schedule_cancellation_over_write =
|
744
635
|
"{}";
|
745
|
-
const char* const description_separate_ping_from_keepalive =
|
746
|
-
"Keep a different keepalive timeout (resolution is seeing data after "
|
747
|
-
"sending a ping) from a ping timeout (resolution is getting a ping ack "
|
748
|
-
"after sending a ping) The first can be short and determines liveness. The "
|
749
|
-
"second can be longer and determines protocol correctness.";
|
750
|
-
const char* const additional_constraints_separate_ping_from_keepalive = "{}";
|
751
636
|
const char* const description_server_privacy = "If set, server privacy";
|
752
637
|
const char* const additional_constraints_server_privacy = "{}";
|
753
|
-
const char* const description_settings_timeout =
|
754
|
-
"If set, use the settings timeout to send settings frame to the peer.";
|
755
|
-
const char* const additional_constraints_settings_timeout = "{}";
|
756
|
-
const char* const description_tarpit =
|
757
|
-
"If set, tarpit invalid requests for some amount of time";
|
758
|
-
const char* const additional_constraints_tarpit = "{}";
|
759
638
|
const char* const description_tcp_frame_size_tuning =
|
760
639
|
"If set, enables TCP to use RPC size estimation made by higher layers. TCP "
|
761
640
|
"would not indicate completion of a read operation until a specified "
|
@@ -772,10 +651,18 @@ const char* const description_unconstrained_max_quota_buffer_size =
|
|
772
651
|
"Discard the cap on the max free pool size for one memory allocator";
|
773
652
|
const char* const additional_constraints_unconstrained_max_quota_buffer_size =
|
774
653
|
"{}";
|
775
|
-
const char* const
|
776
|
-
"
|
777
|
-
|
778
|
-
const char* const
|
654
|
+
const char* const description_v3_backend_metric_filter =
|
655
|
+
"Use the backend metric filter utilizing the v3 filter api";
|
656
|
+
const char* const additional_constraints_v3_backend_metric_filter = "{}";
|
657
|
+
const char* const description_v3_channel_idle_filters =
|
658
|
+
"Use the v3 filter API version of the idle filters.";
|
659
|
+
const char* const additional_constraints_v3_channel_idle_filters = "{}";
|
660
|
+
const char* const description_v3_compression_filter =
|
661
|
+
"Use the compression filter utilizing the v3 filter api";
|
662
|
+
const char* const additional_constraints_v3_compression_filter = "{}";
|
663
|
+
const char* const description_v3_server_auth_filter =
|
664
|
+
"Use the server auth filter utilizing the v3 filter api";
|
665
|
+
const char* const additional_constraints_v3_server_auth_filter = "{}";
|
779
666
|
const char* const description_work_serializer_clears_time_cache =
|
780
667
|
"Have the work serializer clear the time cache when it dispatches work.";
|
781
668
|
const char* const additional_constraints_work_serializer_clears_time_cache =
|
@@ -785,12 +672,14 @@ const char* const description_work_serializer_dispatch =
|
|
785
672
|
"callback, instead of running things inline in the first thread that "
|
786
673
|
"successfully enqueues work.";
|
787
674
|
const char* const additional_constraints_work_serializer_dispatch = "{}";
|
788
|
-
const char* const description_write_size_cap =
|
789
|
-
"Limit outgoing writes proportional to the target write size";
|
790
|
-
const char* const additional_constraints_write_size_cap = "{}";
|
791
675
|
const char* const description_write_size_policy =
|
792
676
|
"Try to size writes such that they don't create too large of a backlog";
|
793
677
|
const char* const additional_constraints_write_size_policy = "{}";
|
678
|
+
const char* const description_write_size_cap =
|
679
|
+
"Limit outgoing writes proportional to the target write size";
|
680
|
+
const char* const additional_constraints_write_size_cap = "{}";
|
681
|
+
const uint8_t required_experiments_write_size_cap[] = {
|
682
|
+
static_cast<uint8_t>(grpc_core::kExperimentIdWriteSizePolicy)};
|
794
683
|
const char* const description_wrr_delegate_to_pick_first =
|
795
684
|
"Change WRR code to delegate to pick_first as per dualstack backend "
|
796
685
|
"design.";
|
@@ -800,110 +689,100 @@ const char* const additional_constraints_wrr_delegate_to_pick_first = "{}";
|
|
800
689
|
namespace grpc_core {
|
801
690
|
|
802
691
|
const ExperimentMetadata g_experiment_metadata[] = {
|
803
|
-
{"block_excessive_requests_before_settings_ack",
|
804
|
-
description_block_excessive_requests_before_settings_ack,
|
805
|
-
additional_constraints_block_excessive_requests_before_settings_ack, true,
|
806
|
-
true},
|
807
692
|
{"call_status_override_on_cancellation",
|
808
693
|
description_call_status_override_on_cancellation,
|
809
|
-
additional_constraints_call_status_override_on_cancellation,
|
694
|
+
additional_constraints_call_status_override_on_cancellation, nullptr, 0,
|
695
|
+
false, true},
|
810
696
|
{"canary_client_privacy", description_canary_client_privacy,
|
811
|
-
additional_constraints_canary_client_privacy, false, false},
|
812
|
-
{"chttp2_batch_requests", description_chttp2_batch_requests,
|
813
|
-
additional_constraints_chttp2_batch_requests, true, true},
|
814
|
-
{"chttp2_offload_on_rst_stream", description_chttp2_offload_on_rst_stream,
|
815
|
-
additional_constraints_chttp2_offload_on_rst_stream, true, true},
|
697
|
+
additional_constraints_canary_client_privacy, nullptr, 0, false, false},
|
816
698
|
{"client_idleness", description_client_idleness,
|
817
|
-
additional_constraints_client_idleness, true, true},
|
699
|
+
additional_constraints_client_idleness, nullptr, 0, true, true},
|
818
700
|
{"client_privacy", description_client_privacy,
|
819
|
-
additional_constraints_client_privacy, false, false},
|
820
|
-
{"combiner_offload_to_event_engine",
|
821
|
-
description_combiner_offload_to_event_engine,
|
822
|
-
additional_constraints_combiner_offload_to_event_engine, true, true},
|
701
|
+
additional_constraints_client_privacy, nullptr, 0, false, false},
|
823
702
|
{"event_engine_client", description_event_engine_client,
|
824
|
-
additional_constraints_event_engine_client, false, true},
|
703
|
+
additional_constraints_event_engine_client, nullptr, 0, false, true},
|
825
704
|
{"event_engine_dns", description_event_engine_dns,
|
826
|
-
additional_constraints_event_engine_dns, false, false},
|
705
|
+
additional_constraints_event_engine_dns, nullptr, 0, false, false},
|
827
706
|
{"event_engine_listener", description_event_engine_listener,
|
828
|
-
additional_constraints_event_engine_listener, true, true},
|
707
|
+
additional_constraints_event_engine_listener, nullptr, 0, true, true},
|
829
708
|
{"free_large_allocator", description_free_large_allocator,
|
830
|
-
additional_constraints_free_large_allocator, false, true},
|
709
|
+
additional_constraints_free_large_allocator, nullptr, 0, false, true},
|
831
710
|
{"http2_stats_fix", description_http2_stats_fix,
|
832
|
-
additional_constraints_http2_stats_fix, true, true},
|
711
|
+
additional_constraints_http2_stats_fix, nullptr, 0, true, true},
|
833
712
|
{"keepalive_fix", description_keepalive_fix,
|
834
|
-
additional_constraints_keepalive_fix, false, false},
|
713
|
+
additional_constraints_keepalive_fix, nullptr, 0, false, false},
|
835
714
|
{"keepalive_server_fix", description_keepalive_server_fix,
|
836
|
-
additional_constraints_keepalive_server_fix, false, false},
|
837
|
-
{"lazier_stream_updates", description_lazier_stream_updates,
|
838
|
-
additional_constraints_lazier_stream_updates, true, true},
|
839
|
-
{"memory_pressure_controller", description_memory_pressure_controller,
|
840
|
-
additional_constraints_memory_pressure_controller, false, true},
|
715
|
+
additional_constraints_keepalive_server_fix, nullptr, 0, false, false},
|
841
716
|
{"monitoring_experiment", description_monitoring_experiment,
|
842
|
-
additional_constraints_monitoring_experiment, true, true},
|
717
|
+
additional_constraints_monitoring_experiment, nullptr, 0, true, true},
|
843
718
|
{"multiping", description_multiping, additional_constraints_multiping,
|
844
|
-
false, true},
|
845
|
-
{"overload_protection", description_overload_protection,
|
846
|
-
additional_constraints_overload_protection, true, true},
|
719
|
+
nullptr, 0, false, true},
|
847
720
|
{"peer_state_based_framing", description_peer_state_based_framing,
|
848
|
-
additional_constraints_peer_state_based_framing, false, true},
|
721
|
+
additional_constraints_peer_state_based_framing, nullptr, 0, false, true},
|
849
722
|
{"pending_queue_cap", description_pending_queue_cap,
|
850
|
-
additional_constraints_pending_queue_cap, true, true},
|
723
|
+
additional_constraints_pending_queue_cap, nullptr, 0, true, true},
|
851
724
|
{"pick_first_happy_eyeballs", description_pick_first_happy_eyeballs,
|
852
|
-
additional_constraints_pick_first_happy_eyeballs, true, true},
|
853
|
-
{"ping_on_rst_stream", description_ping_on_rst_stream,
|
854
|
-
additional_constraints_ping_on_rst_stream, true, true},
|
725
|
+
additional_constraints_pick_first_happy_eyeballs, nullptr, 0, true, true},
|
855
726
|
{"promise_based_client_call", description_promise_based_client_call,
|
856
|
-
additional_constraints_promise_based_client_call, false, true},
|
857
|
-
{"promise_based_inproc_transport",
|
858
|
-
description_promise_based_inproc_transport,
|
859
|
-
additional_constraints_promise_based_inproc_transport, false, false},
|
727
|
+
additional_constraints_promise_based_client_call, nullptr, 0, false, true},
|
860
728
|
{"promise_based_server_call", description_promise_based_server_call,
|
861
|
-
additional_constraints_promise_based_server_call, false, true},
|
862
|
-
{"red_max_concurrent_streams", description_red_max_concurrent_streams,
|
863
|
-
additional_constraints_red_max_concurrent_streams, false, true},
|
729
|
+
additional_constraints_promise_based_server_call, nullptr, 0, false, true},
|
864
730
|
{"registered_method_lookup_in_transport",
|
865
731
|
description_registered_method_lookup_in_transport,
|
866
|
-
additional_constraints_registered_method_lookup_in_transport,
|
732
|
+
additional_constraints_registered_method_lookup_in_transport, nullptr, 0,
|
733
|
+
true, true},
|
734
|
+
{"promise_based_inproc_transport",
|
735
|
+
description_promise_based_inproc_transport,
|
736
|
+
additional_constraints_promise_based_inproc_transport,
|
737
|
+
required_experiments_promise_based_inproc_transport, 3, false, false},
|
867
738
|
{"registered_methods_map", description_registered_methods_map,
|
868
|
-
additional_constraints_registered_methods_map, false, true},
|
739
|
+
additional_constraints_registered_methods_map, nullptr, 0, false, true},
|
869
740
|
{"rfc_max_concurrent_streams", description_rfc_max_concurrent_streams,
|
870
|
-
additional_constraints_rfc_max_concurrent_streams,
|
741
|
+
additional_constraints_rfc_max_concurrent_streams, nullptr, 0, false,
|
742
|
+
true},
|
871
743
|
{"round_robin_delegate_to_pick_first",
|
872
744
|
description_round_robin_delegate_to_pick_first,
|
873
|
-
additional_constraints_round_robin_delegate_to_pick_first,
|
874
|
-
|
745
|
+
additional_constraints_round_robin_delegate_to_pick_first, nullptr, 0,
|
746
|
+
true, true},
|
747
|
+
{"rstpit", description_rstpit, additional_constraints_rstpit, nullptr, 0,
|
748
|
+
false, true},
|
875
749
|
{"schedule_cancellation_over_write",
|
876
750
|
description_schedule_cancellation_over_write,
|
877
|
-
additional_constraints_schedule_cancellation_over_write,
|
878
|
-
|
879
|
-
additional_constraints_separate_ping_from_keepalive, true, true},
|
751
|
+
additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
|
752
|
+
true},
|
880
753
|
{"server_privacy", description_server_privacy,
|
881
|
-
additional_constraints_server_privacy, false, false},
|
882
|
-
{"settings_timeout", description_settings_timeout,
|
883
|
-
additional_constraints_settings_timeout, true, true},
|
884
|
-
{"tarpit", description_tarpit, additional_constraints_tarpit, true, true},
|
754
|
+
additional_constraints_server_privacy, nullptr, 0, false, false},
|
885
755
|
{"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
|
886
|
-
additional_constraints_tcp_frame_size_tuning, false, true},
|
756
|
+
additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
|
887
757
|
{"tcp_rcv_lowat", description_tcp_rcv_lowat,
|
888
|
-
additional_constraints_tcp_rcv_lowat, false, true},
|
758
|
+
additional_constraints_tcp_rcv_lowat, nullptr, 0, false, true},
|
889
759
|
{"trace_record_callops", description_trace_record_callops,
|
890
|
-
additional_constraints_trace_record_callops, false, true},
|
760
|
+
additional_constraints_trace_record_callops, nullptr, 0, false, true},
|
891
761
|
{"unconstrained_max_quota_buffer_size",
|
892
762
|
description_unconstrained_max_quota_buffer_size,
|
893
|
-
additional_constraints_unconstrained_max_quota_buffer_size,
|
894
|
-
|
895
|
-
|
763
|
+
additional_constraints_unconstrained_max_quota_buffer_size, nullptr, 0,
|
764
|
+
false, true},
|
765
|
+
{"v3_backend_metric_filter", description_v3_backend_metric_filter,
|
766
|
+
additional_constraints_v3_backend_metric_filter, nullptr, 0, false, true},
|
767
|
+
{"v3_channel_idle_filters", description_v3_channel_idle_filters,
|
768
|
+
additional_constraints_v3_channel_idle_filters, nullptr, 0, false, true},
|
769
|
+
{"v3_compression_filter", description_v3_compression_filter,
|
770
|
+
additional_constraints_v3_compression_filter, nullptr, 0, false, true},
|
771
|
+
{"v3_server_auth_filter", description_v3_server_auth_filter,
|
772
|
+
additional_constraints_v3_server_auth_filter, nullptr, 0, false, true},
|
896
773
|
{"work_serializer_clears_time_cache",
|
897
774
|
description_work_serializer_clears_time_cache,
|
898
|
-
additional_constraints_work_serializer_clears_time_cache,
|
775
|
+
additional_constraints_work_serializer_clears_time_cache, nullptr, 0, true,
|
776
|
+
true},
|
899
777
|
{"work_serializer_dispatch", description_work_serializer_dispatch,
|
900
|
-
additional_constraints_work_serializer_dispatch, false, true},
|
901
|
-
{"write_size_cap", description_write_size_cap,
|
902
|
-
additional_constraints_write_size_cap, true, true},
|
778
|
+
additional_constraints_work_serializer_dispatch, nullptr, 0, false, true},
|
903
779
|
{"write_size_policy", description_write_size_policy,
|
904
|
-
additional_constraints_write_size_policy, true, true},
|
780
|
+
additional_constraints_write_size_policy, nullptr, 0, true, true},
|
781
|
+
{"write_size_cap", description_write_size_cap,
|
782
|
+
additional_constraints_write_size_cap, required_experiments_write_size_cap,
|
783
|
+
1, true, true},
|
905
784
|
{"wrr_delegate_to_pick_first", description_wrr_delegate_to_pick_first,
|
906
|
-
additional_constraints_wrr_delegate_to_pick_first, true, true},
|
785
|
+
additional_constraints_wrr_delegate_to_pick_first, nullptr, 0, true, true},
|
907
786
|
};
|
908
787
|
|
909
788
|
} // namespace grpc_core
|