1# Copyright 2022 gRPC authors. 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15# Format of each entry: 16# name: name of the experiment 17# description: description of the experiment 18# expiry: when is the next time this experiment *must* be updated 19# (date, YYYY/MM/DD) 20# test_tags: a set of bazel tags, that if a test declares them signals 21# that that test should be run with this experiment enabled in CI 22# allow_in_fuzzing_config: optional boolean (true if not specified) 23# if false, this experiment will not be included in fuzzers that 24# explore the config space 25# requires: A list of names of experiments that this experiment depends on. 26# Defaults to the empty list. 27# If any of the experiments in the required list is determined to 28# be disabled at runtime, this experiment is disabled at runtime. 29# uses_polling: optional boolean (false if not specified) that indicates that 30# this experiment should be tested with all different polling 31# engines. 32# 33# Well known test tags: 34# core_end2end_test: all tests, fixtures in the core end2end suite 35# endpoint_test: endpoint related iomgr tests 36# flow_control_test: tests pertaining explicitly to flow control 37# hpack_test: hpack encode/decode tests 38# promise_test: tests around the promise architecture 39# resource_quota_test: tests known to exercise resource quota 40 41# This file only defines the experiments. Refer to rollouts.yaml for the rollout 42# state of each experiment. 43- name: backoff_cap_initial_at_max 44 description: Backoff library applies max_backoff even on initial_backoff. 45 expiry: 2025/03/01 46 owner: roth@google.com 47 test_tags: [] 48- name: call_tracer_in_transport 49 description: Transport directly passes byte counts to CallTracer. 50 expiry: 2025/02/01 51 owner: roth@google.com 52 test_tags: [] 53- name: chaotic_good_legacy_protocol 54 description: If set, use the first version of the chaotic-good protocol when that protocol is enabled. 55 expiry: 2025/01/15 56 owner: ctiller@google.com 57 test_tags: [core_end2end_test] 58- name: disable_buffer_hint_on_high_memory_pressure 59 description: 60 Disable buffer hint flag parsing in the transport under high memory pressure. 61 expiry: 2025/03/01 62 owner: vigneshbabu@google.com 63 test_tags: [] 64- name: event_engine_application_callbacks 65 description: Run application callbacks in EventEngine threads, instead of on the thread-local ApplicationCallbackExecCtx 66 expiry: 2025/03/01 67 owner: hork@google.com 68- name: event_engine_callback_cq 69 description: Use EventEngine instead of the CallbackAlternativeCQ. 70 expiry: 2025/03/01 71 owner: hork@google.com 72 requires: ["event_engine_application_callbacks"] 73- name: event_engine_client 74 description: Use EventEngine clients instead of iomgr's grpc_tcp_client 75 expiry: 2025/03/01 76 owner: hork@google.com 77 test_tags: ["core_end2end_test", "event_engine_client_test"] 78 uses_polling: true 79- name: event_engine_dns 80 description: 81 If set, use EventEngine DNSResolver for client channel resolution 82 expiry: 2025/03/01 83 owner: yijiem@google.com 84 test_tags: ["cancel_ares_query_test", "resolver_component_tests_runner_invoker"] 85 allow_in_fuzzing_config: false 86 uses_polling: true 87- name: event_engine_dns_non_client_channel 88 description: 89 If set, use EventEngine DNSResolver in other places besides client channel. 90 expiry: 2025/03/01 91 owner: yijiem@google.com 92 test_tags: ["core_end2end_test"] 93 allow_in_fuzzing_config: false 94 uses_polling: true 95- name: event_engine_listener 96 description: Use EventEngine listeners instead of iomgr's grpc_tcp_server 97 expiry: 2025/03/01 98 owner: vigneshbabu@google.com 99 test_tags: ["core_end2end_test", "event_engine_listener_test"] 100 uses_polling: true 101- name: free_large_allocator 102 description: If set, return all free bytes from a "big" allocator 103 expiry: 2025/03/31 104 owner: alishananda@google.com 105 test_tags: [resource_quota_test] 106- name: local_connector_secure 107 description: Local security connector uses TSI_SECURITY_NONE for LOCAL_TCP connections. 108 expiry: 2025/01/30 109 owner: mattstev@google.com 110 test_tags: ["core_end2end_test"] 111- name: max_pings_wo_data_throttle 112 description: 113 Experiment to throttle pings to a period of 1 min when 114 GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA limit has reached (instead of 115 completely blocking). 116 expiry: 2025/01/30 117 owner: yashkt@google.com 118 test_tags: [] 119- name: monitoring_experiment 120 description: Placeholder experiment to prove/disprove our monitoring is working 121 expiry: never-ever 122 owner: ctiller@google.com 123 test_tags: [] 124- name: multiping 125 description: 126 Allow more than one ping to be in flight at a time by default. 127 expiry: 2025/03/03 128 owner: ctiller@google.com 129 test_tags: [flow_control_test] 130- name: pick_first_new 131 description: New pick_first impl with memory reduction. 132 expiry: 2025/03/01 133 owner: roth@google.com 134 test_tags: ["lb_unit_test", "cpp_lb_end2end_test", "xds_end2end_test"] 135- name: posix_ee_skip_grpc_init 136 description: 137 Prevent the PosixEventEngine from calling grpc_init & grpc_shutdown on 138 creation and destruction. 139 expiry: 2025/03/02 140 owner: hork@google.com 141 test_tags: ["core_end2end_test", "cpp_end2end_test"] 142- name: prioritize_finished_requests 143 description: Prioritize flushing out finished requests over other in-flight 144 requests during transport writes. 145 expiry: 2025/03/01 146 owner: vigneshbabu@google.com 147 test_tags: [] 148- name: promise_based_http2_client_transport 149 description: 150 Use promises for the http2 client transport. We have kept client and 151 server transport experiments separate to help with smoother roll outs 152 and also help with interop testing. 153 expiry: 2025/06/03 154 owner: tjagtap@google.com 155 test_tags: [] 156 allow_in_fuzzing_config: true 157- name: promise_based_http2_server_transport 158 description: 159 Use promises for the http2 server transport. We have kept client and 160 server transport experiments separate to help with smoother roll outs 161 and also help with interop testing. 162 expiry: 2025/06/03 163 owner: tjagtap@google.com 164 test_tags: [] 165 allow_in_fuzzing_config: true 166- name: promise_based_inproc_transport 167 description: 168 Use promises for the in-process transport. 169 expiry: 2025/03/03 170 owner: ctiller@google.com 171 test_tags: [] 172 allow_in_fuzzing_config: false # experiment currently crashes if enabled 173- name: retry_in_callv3 174 description: Support retries with call-v3 175 expiry: 2025/06/06 176 owner: ctiller@google.com 177 test_tags: [core_end2end_test] 178- name: rq_fast_reject 179 description: 180 Resource quota rejects requests immediately (before allocating the request 181 structure) under very high memory pressure. 182 expiry: 2025/06/06 183 owner: ctiller@google.com 184 test_tags: [] 185- name: schedule_cancellation_over_write 186 description: Allow cancellation op to be scheduled over a write 187 expiry: 2025/03/01 188 owner: vigneshbabu@google.com 189 test_tags: [] 190- name: server_listener 191 description: 192 If set, the new server listener classes are used. 193 requires: ["work_serializer_dispatch"] 194 expiry: 2025/03/31 195 owner: yashkt@google.com 196 test_tags: ["xds_end2end_test", "core_end2end_test"] 197- name: tcp_frame_size_tuning 198 description: 199 If set, enables TCP to use RPC size estimation made by higher layers. 200 TCP would not indicate completion of a read operation until a specified 201 number of bytes have been read over the socket. 202 Buffers are also allocated according to estimated RPC sizes. 203 expiry: 2025/03/01 204 owner: vigneshbabu@google.com 205 test_tags: ["endpoint_test", "flow_control_test"] 206- name: tcp_rcv_lowat 207 description: Use SO_RCVLOWAT to avoid wakeups on the read path. 208 expiry: 2025/03/01 209 owner: vigneshbabu@google.com 210 test_tags: ["endpoint_test", "flow_control_test"] 211- name: time_caching_in_party 212 description: Disable time caching in exec_ctx, and enable it only in a single party execution. 213 owner: ctiller@google.com 214 expiry: 2025/01/17 215 test_tags: [] 216- name: trace_record_callops 217 description: Enables tracing of call batch initiation and completion. 218 expiry: 2025/01/30 219 owner: vigneshbabu@google.com 220 test_tags: [] 221- name: unconstrained_max_quota_buffer_size 222 description: Discard the cap on the max free pool size for one memory allocator 223 expiry: 2025/03/03 224 owner: ctiller@google.com 225 test_tags: [resource_quota_test] 226- name: work_serializer_dispatch 227 description: 228 Have the work serializer dispatch work to event engine for every callback, 229 instead of running things inline in the first thread that successfully 230 enqueues work. 231 expiry: 2025/01/30 232 owner: ysseung@google.com 233 test_tags: ["core_end2end_test", "cpp_end2end_test", "xds_end2end_test", "lb_unit_test"] 234