[chttp2] Re-enable overload protection experiment (#34770)

Seems like a small pause is needed for max_concurrent_streams to allow
things to settle out properly with this experiment.
pull/34771/head
Craig Tiller 1 year ago committed by GitHub
parent e3ff5f4166
commit c9e362238c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      bazel/experiments.bzl
  2. 6
      src/core/lib/experiments/experiments.cc
  3. 9
      src/core/lib/experiments/experiments.h
  4. 2
      src/core/lib/experiments/rollouts.yaml
  5. 5
      test/core/end2end/tests/max_concurrent_streams.cc

@ -39,7 +39,6 @@ EXPERIMENTS = {
],
"flow_control_test": [
"multiping",
"overload_protection",
"peer_state_based_framing",
"red_max_concurrent_streams",
"rstpit",
@ -89,6 +88,7 @@ EXPERIMENTS = {
"chttp2_batch_requests",
"chttp2_offload_on_rst_stream",
"lazier_stream_updates",
"overload_protection",
"write_size_cap",
"write_size_policy",
],
@ -129,7 +129,6 @@ EXPERIMENTS = {
],
"flow_control_test": [
"multiping",
"overload_protection",
"peer_state_based_framing",
"red_max_concurrent_streams",
"rstpit",
@ -173,6 +172,7 @@ EXPERIMENTS = {
"chttp2_batch_requests",
"chttp2_offload_on_rst_stream",
"lazier_stream_updates",
"overload_protection",
"write_size_cap",
"write_size_policy",
],
@ -224,7 +224,6 @@ EXPERIMENTS = {
],
"flow_control_test": [
"multiping",
"overload_protection",
"peer_state_based_framing",
"red_max_concurrent_streams",
"rstpit",
@ -271,6 +270,7 @@ EXPERIMENTS = {
"chttp2_batch_requests",
"chttp2_offload_on_rst_stream",
"lazier_stream_updates",
"overload_protection",
"write_size_cap",
"write_size_policy",
],

@ -240,7 +240,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
{"multiping", description_multiping, additional_constraints_multiping,
false, true},
{"overload_protection", description_overload_protection,
additional_constraints_overload_protection, false, true},
additional_constraints_overload_protection, true, true},
{"peer_state_based_framing", description_peer_state_based_framing,
additional_constraints_peer_state_based_framing, false, true},
{"pick_first_happy_eyeballs", description_pick_first_happy_eyeballs,
@ -521,7 +521,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
{"multiping", description_multiping, additional_constraints_multiping,
false, true},
{"overload_protection", description_overload_protection,
additional_constraints_overload_protection, false, true},
additional_constraints_overload_protection, true, true},
{"peer_state_based_framing", description_peer_state_based_framing,
additional_constraints_peer_state_based_framing, false, true},
{"pick_first_happy_eyeballs", description_pick_first_happy_eyeballs,
@ -802,7 +802,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
{"multiping", description_multiping, additional_constraints_multiping,
false, true},
{"overload_protection", description_overload_protection,
additional_constraints_overload_protection, false, true},
additional_constraints_overload_protection, true, true},
{"peer_state_based_framing", description_peer_state_based_framing,
additional_constraints_peer_state_based_framing, false, true},
{"pick_first_happy_eyeballs", description_pick_first_happy_eyeballs,

@ -91,7 +91,8 @@ inline bool IsMemoryPressureControllerEnabled() { return false; }
#define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
inline bool IsMonitoringExperimentEnabled() { return true; }
inline bool IsMultipingEnabled() { return false; }
inline bool IsOverloadProtectionEnabled() { return false; }
#define GRPC_EXPERIMENT_IS_INCLUDED_OVERLOAD_PROTECTION
inline bool IsOverloadProtectionEnabled() { return true; }
inline bool IsPeerStateBasedFramingEnabled() { return false; }
#define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_HAPPY_EYEBALLS
inline bool IsPickFirstHappyEyeballsEnabled() { return true; }
@ -166,7 +167,8 @@ inline bool IsMemoryPressureControllerEnabled() { return false; }
#define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
inline bool IsMonitoringExperimentEnabled() { return true; }
inline bool IsMultipingEnabled() { return false; }
inline bool IsOverloadProtectionEnabled() { return false; }
#define GRPC_EXPERIMENT_IS_INCLUDED_OVERLOAD_PROTECTION
inline bool IsOverloadProtectionEnabled() { return true; }
inline bool IsPeerStateBasedFramingEnabled() { return false; }
#define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_HAPPY_EYEBALLS
inline bool IsPickFirstHappyEyeballsEnabled() { return true; }
@ -240,7 +242,8 @@ inline bool IsMemoryPressureControllerEnabled() { return false; }
#define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
inline bool IsMonitoringExperimentEnabled() { return true; }
inline bool IsMultipingEnabled() { return false; }
inline bool IsOverloadProtectionEnabled() { return false; }
#define GRPC_EXPERIMENT_IS_INCLUDED_OVERLOAD_PROTECTION
inline bool IsOverloadProtectionEnabled() { return true; }
inline bool IsPeerStateBasedFramingEnabled() { return false; }
#define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_HAPPY_EYEBALLS
inline bool IsPickFirstHappyEyeballsEnabled() { return true; }

@ -89,7 +89,7 @@
- name: monitoring_experiment
default: true
- name: overload_protection
default: false
default: true
- name: peer_state_based_framing
default: false
- name: pick_first_happy_eyeballs

@ -133,6 +133,11 @@ CORE_END2END_TEST(Http2SingleHopTest, MaxConcurrentStreams) {
live_call = (live_call == 300) ? 400 : 300;
Expect(live_call + 1, true);
Step();
// Spin for a little: we expect to see no events now - and this time allows
// any overload protection machinery in the transport to settle (chttp2 tries
// to ensure calls are finished deleting before allowing more requests
// through).
Step();
auto s2 = RequestCall(201);
Expect(201, true);
Step();

Loading…
Cancel
Save