• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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