• 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 exercse resource quota
40
41# This file only defines the experiments. Refer to rollouts.yaml for the rollout
42# state of each experiment.
43- name: call_status_override_on_cancellation
44  description:
45    Avoid overriding call status of successfully finished calls if it races with
46    cancellation.
47  expiry: 2024/04/01
48  owner: vigneshbabu@google.com
49  test_tags: []
50- name: call_v3
51  description: Promise-based call version 3.
52  expiry: 2024/06/01
53  owner: ctiller@google.com
54  test_tags: []
55- name: canary_client_privacy
56  description:
57    If set, canary client privacy
58  expiry: 2024/08/01
59  owner: alishananda@google.com
60  test_tags: []
61  allow_in_fuzzing_config: false
62- name: chaotic_good
63  description:
64    If set, enable the chaotic good load transport (this is mostly here for testing)
65  expiry: 2024/09/09
66  owner: ctiller@google.com
67  requires: [promise_based_client_call, promise_based_server_call]
68  test_tags: [core_end2end_test]
69- name: client_privacy
70  description:
71    If set, client privacy
72  expiry: 2024/08/01
73  owner: alishananda@google.com
74  test_tags: []
75  allow_in_fuzzing_config: false
76- name: event_engine_client
77  description: Use EventEngine clients instead of iomgr's grpc_tcp_client
78  expiry: 2024/07/01
79  owner: hork@google.com
80  test_tags: ["core_end2end_test", "event_engine_client_test"]
81  uses_polling: true
82- name: event_engine_dns
83  description:
84    If set, use EventEngine DNSResolver for client channel resolution
85  expiry: 2024/07/01
86  owner: yijiem@google.com
87  test_tags: ["cancel_ares_query_test", "resolver_component_tests_runner_invoker"]
88  allow_in_fuzzing_config: false
89  uses_polling: true
90- name: event_engine_listener
91  description: Use EventEngine listeners instead of iomgr's grpc_tcp_server
92  expiry: 2024/07/01
93  owner: vigneshbabu@google.com
94  test_tags: ["core_end2end_test", "event_engine_listener_test"]
95  uses_polling: true
96- name: free_large_allocator
97  description: If set, return all free bytes from a "big" allocator
98  expiry: 2024/08/01
99  owner: alishananda@google.com
100  test_tags: [resource_quota_test]
101- name: http2_stats_fix
102  description:
103    Fix on HTTP2 outgoing data stats reporting
104  expiry: 2024/03/31
105  owner: yashkt@google.com
106  test_tags: []
107- name: keepalive_fix
108  description:
109    Allows overriding keepalive_permit_without_calls.
110    Refer https://github.com/grpc/grpc/pull/33428 for more information.
111  expiry: 2024/06/30
112  owner: yashkt@google.com
113  test_tags: []
114  allow_in_fuzzing_config: false
115- name: keepalive_server_fix
116  description:
117    Allows overriding keepalive_permit_without_calls for servers.
118    Refer https://github.com/grpc/grpc/pull/33917 for more information.
119  expiry: 2024/12/31
120  owner: yashkt@google.com
121  test_tags: []
122  allow_in_fuzzing_config: false
123- name: monitoring_experiment
124  description: Placeholder experiment to prove/disprove our monitoring is working
125  expiry: never-ever
126  owner: ctiller@google.com
127  test_tags: []
128- name: multiping
129  description:
130    Allow more than one ping to be in flight at a time by default.
131  expiry: 2024/06/15
132  owner: ctiller@google.com
133  test_tags: [flow_control_test]
134- name: peer_state_based_framing
135  description:
136    If set, the max sizes of frames sent to lower layers is controlled based
137    on the peer's memory pressure which is reflected in its max http2 frame
138    size.
139  expiry: 2024/08/01
140  owner: vigneshbabu@google.com
141  test_tags: ["flow_control_test"]
142- name: pending_queue_cap
143  description:
144    In the sync & async apis (but not the callback api), cap the number of
145    received but unrequested requests in the server for each call type.
146    A received message is one that was read from the wire on the server.
147    A requested message is one explicitly requested by the application using
148    grpc_server_request_call or grpc_server_request_registered_call (or their
149    wrappers in the C++ API).
150  expiry: 2024/05/05
151  owner: ctiller@google.com
152  test_tags: []
153- name: promise_based_client_call
154  description:
155    If set, use the new gRPC promise based call code when it's appropriate
156    (ie when all filters in a stack are promise based)
157  expiry: 2024/06/14
158  owner: ctiller@google.com
159  test_tags: ["core_end2end_test", "lame_client_test"]
160  requires: ["event_engine_listener", "event_engine_client"]
161- name: promise_based_inproc_transport
162  description:
163    Use promises for the in-process transport.
164  expiry: 2024/06/06
165  owner: ctiller@google.com
166  test_tags: []
167  allow_in_fuzzing_config: false # experiment currently crashes if enabled
168  requires: [promise_based_client_call, promise_based_server_call]
169- name: promise_based_server_call
170  description:
171    If set, use the new gRPC promise based call code when it's appropriate
172    (ie when all filters in a stack are promise based)
173  expiry: 2024/06/14
174  owner: ctiller@google.com
175  test_tags: ["core_end2end_test", "cpp_end2end_test", "xds_end2end_test", "logging_test"]
176- name: rstpit
177  description:
178    On RST_STREAM on a server, reduce MAX_CONCURRENT_STREAMS for a short duration
179  expiry: 2024/08/03
180  owner: ctiller@google.com
181  test_tags: [flow_control_test]
182- name: schedule_cancellation_over_write
183  description: Allow cancellation op to be scheduled over a write
184  expiry: 2024/04/01
185  owner: vigneshbabu@google.com
186  test_tags: []
187- name: server_privacy
188  description:
189    If set, server privacy
190  expiry: 2024/08/01
191  owner: alishananda@google.com
192  test_tags: []
193  allow_in_fuzzing_config: false
194- name: tcp_frame_size_tuning
195  description:
196    If set, enables TCP to use RPC size estimation made by higher layers.
197    TCP would not indicate completion of a read operation until a specified
198    number of bytes have been read over the socket.
199    Buffers are also allocated according to estimated RPC sizes.
200  expiry: 2024/08/01
201  owner: vigneshbabu@google.com
202  test_tags: ["endpoint_test", "flow_control_test"]
203- name: tcp_rcv_lowat
204  description: Use SO_RCVLOWAT to avoid wakeups on the read path.
205  expiry: 2024/08/01
206  owner: vigneshbabu@google.com
207  test_tags: ["endpoint_test", "flow_control_test"]
208- name: trace_record_callops
209  description: Enables tracing of call batch initiation and completion.
210  expiry: 2024/04/01
211  owner: vigneshbabu@google.com
212  test_tags: []
213- name: unconstrained_max_quota_buffer_size
214  description: Discard the cap on the max free pool size for one memory allocator
215  expiry: 2024/09/01
216  owner: ctiller@google.com
217  test_tags: [resource_quota_test]
218- name: work_serializer_clears_time_cache
219  description:
220    Have the work serializer clear the time cache when it dispatches work.
221  expiry: 2024/07/01
222  owner: ctiller@google.com
223  test_tags: []
224- name: work_serializer_dispatch
225  description:
226    Have the work serializer dispatch work to event engine for every callback,
227    instead of running things inline in the first thread that successfully
228    enqueues work.
229  expiry: 2024/06/30
230  owner: ysseung@google.com
231  test_tags: ["core_end2end_test", "cpp_end2end_test", "xds_end2end_test", "lb_unit_test"]
232