# Copyright 2022 gRPC authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Format of each entry: # name: name of the experiment # description: description of the experiment # expiry: when is the next time this experiment *must* be updated # (date, YYYY/MM/DD) # test_tags: a set of bazel tags, that if a test declares them signals # that that test should be run with this experiment enabled in CI # allow_in_fuzzing_config: optional boolean (true if not specified) # if false, this experiment will not be included in fuzzers that # explore the config space # requires: A list of names of experiments that this experiment depends on. # Defaults to the empty list. # If any of the experiments in the required list is determined to # be disabled at runtime, this experiment is disabled at runtime. # uses_polling: optional boolean (false if not specified) that indicates that # this experiment should be tested with all different polling # engines. # # Well known test tags: # core_end2end_test: all tests, fixtures in the core end2end suite # endpoint_test: endpoint related iomgr tests # flow_control_test: tests pertaining explicitly to flow control # hpack_test: hpack encode/decode tests # promise_test: tests around the promise architecture # resource_quota_test: tests known to exercise resource quota # This file only defines the experiments. Refer to rollouts.yaml for the rollout # state of each experiment. - name: backoff_cap_initial_at_max description: Backoff library applies max_backoff even on initial_backoff. expiry: 2025/03/01 owner: roth@google.com test_tags: [] - name: call_tracer_in_transport description: Transport directly passes byte counts to CallTracer. expiry: 2025/02/01 owner: roth@google.com test_tags: [] - name: chaotic_good_legacy_protocol description: If set, use the first version of the chaotic-good protocol when that protocol is enabled. expiry: 2025/01/15 owner: ctiller@google.com test_tags: [core_end2end_test] - name: disable_buffer_hint_on_high_memory_pressure description: Disable buffer hint flag parsing in the transport under high memory pressure. expiry: 2025/03/01 owner: vigneshbabu@google.com test_tags: [] - name: event_engine_application_callbacks description: Run application callbacks in EventEngine threads, instead of on the thread-local ApplicationCallbackExecCtx expiry: 2025/03/01 owner: hork@google.com - name: event_engine_callback_cq description: Use EventEngine instead of the CallbackAlternativeCQ. expiry: 2025/03/01 owner: hork@google.com requires: ["event_engine_application_callbacks"] - name: event_engine_client description: Use EventEngine clients instead of iomgr's grpc_tcp_client expiry: 2025/03/01 owner: hork@google.com test_tags: ["core_end2end_test", "event_engine_client_test"] uses_polling: true - name: event_engine_dns description: If set, use EventEngine DNSResolver for client channel resolution expiry: 2025/03/01 owner: yijiem@google.com test_tags: ["cancel_ares_query_test", "resolver_component_tests_runner_invoker"] allow_in_fuzzing_config: false uses_polling: true - name: event_engine_dns_non_client_channel description: If set, use EventEngine DNSResolver in other places besides client channel. expiry: 2025/03/01 owner: yijiem@google.com test_tags: ["core_end2end_test"] allow_in_fuzzing_config: false uses_polling: true - name: event_engine_listener description: Use EventEngine listeners instead of iomgr's grpc_tcp_server expiry: 2025/03/01 owner: vigneshbabu@google.com test_tags: ["core_end2end_test", "event_engine_listener_test"] uses_polling: true - name: free_large_allocator description: If set, return all free bytes from a "big" allocator expiry: 2025/03/31 owner: alishananda@google.com test_tags: [resource_quota_test] - name: local_connector_secure description: Local security connector uses TSI_SECURITY_NONE for LOCAL_TCP connections. expiry: 2025/01/30 owner: mattstev@google.com test_tags: ["core_end2end_test"] - name: max_pings_wo_data_throttle description: Experiment to throttle pings to a period of 1 min when GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA limit has reached (instead of completely blocking). expiry: 2025/01/30 owner: yashkt@google.com test_tags: [] - name: monitoring_experiment description: Placeholder experiment to prove/disprove our monitoring is working expiry: never-ever owner: ctiller@google.com test_tags: [] - name: multiping description: Allow more than one ping to be in flight at a time by default. expiry: 2025/03/03 owner: ctiller@google.com test_tags: [flow_control_test] - name: pick_first_new description: New pick_first impl with memory reduction. expiry: 2025/03/01 owner: roth@google.com test_tags: ["lb_unit_test", "cpp_lb_end2end_test", "xds_end2end_test"] - name: posix_ee_skip_grpc_init description: Prevent the PosixEventEngine from calling grpc_init & grpc_shutdown on creation and destruction. expiry: 2025/03/02 owner: hork@google.com test_tags: ["core_end2end_test", "cpp_end2end_test"] - name: prioritize_finished_requests description: Prioritize flushing out finished requests over other in-flight requests during transport writes. expiry: 2025/03/01 owner: vigneshbabu@google.com test_tags: [] - name: promise_based_http2_client_transport description: Use promises for the http2 client transport. We have kept client and server transport experiments separate to help with smoother roll outs and also help with interop testing. expiry: 2025/06/03 owner: tjagtap@google.com test_tags: [] allow_in_fuzzing_config: true - name: promise_based_http2_server_transport description: Use promises for the http2 server transport. We have kept client and server transport experiments separate to help with smoother roll outs and also help with interop testing. expiry: 2025/06/03 owner: tjagtap@google.com test_tags: [] allow_in_fuzzing_config: true - name: promise_based_inproc_transport description: Use promises for the in-process transport. expiry: 2025/03/03 owner: ctiller@google.com test_tags: [] allow_in_fuzzing_config: false # experiment currently crashes if enabled - name: retry_in_callv3 description: Support retries with call-v3 expiry: 2025/06/06 owner: ctiller@google.com test_tags: [core_end2end_test] - name: rq_fast_reject description: Resource quota rejects requests immediately (before allocating the request structure) under very high memory pressure. expiry: 2025/06/06 owner: ctiller@google.com test_tags: [] - name: schedule_cancellation_over_write description: Allow cancellation op to be scheduled over a write expiry: 2025/03/01 owner: vigneshbabu@google.com test_tags: [] - name: server_listener description: If set, the new server listener classes are used. requires: ["work_serializer_dispatch"] expiry: 2025/03/31 owner: yashkt@google.com test_tags: ["xds_end2end_test", "core_end2end_test"] - name: tcp_frame_size_tuning description: If set, enables TCP to use RPC size estimation made by higher layers. TCP would not indicate completion of a read operation until a specified number of bytes have been read over the socket. Buffers are also allocated according to estimated RPC sizes. expiry: 2025/03/01 owner: vigneshbabu@google.com test_tags: ["endpoint_test", "flow_control_test"] - name: tcp_rcv_lowat description: Use SO_RCVLOWAT to avoid wakeups on the read path. expiry: 2025/03/01 owner: vigneshbabu@google.com test_tags: ["endpoint_test", "flow_control_test"] - name: time_caching_in_party description: Disable time caching in exec_ctx, and enable it only in a single party execution. owner: ctiller@google.com expiry: 2025/01/17 test_tags: [] - name: trace_record_callops description: Enables tracing of call batch initiation and completion. expiry: 2025/01/30 owner: vigneshbabu@google.com test_tags: [] - name: unconstrained_max_quota_buffer_size description: Discard the cap on the max free pool size for one memory allocator expiry: 2025/03/03 owner: ctiller@google.com test_tags: [resource_quota_test] - name: work_serializer_dispatch description: Have the work serializer dispatch work to event engine for every callback, instead of running things inline in the first thread that successfully enqueues work. expiry: 2025/01/30 owner: ysseung@google.com test_tags: ["core_end2end_test", "cpp_end2end_test", "xds_end2end_test", "lb_unit_test"]