From 354cdecc1269d6e809f7b1225cc67a1cf90a0b9d Mon Sep 17 00:00:00 2001 From: "Mark D. Roth" Date: Thu, 1 Feb 2024 11:46:34 -0800 Subject: [PATCH] [call v3] add experiment (#35784) Closes #35784 COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/35784 from markdroth:call_v3_experiment 2cabe8cca25c6b34fea022e63e9c50016ffc62fa PiperOrigin-RevId: 603435692 --- bazel/experiments.bzl | 1 + src/core/lib/experiments/experiments.cc | 12 ++++++++++++ src/core/lib/experiments/experiments.h | 8 ++++++++ src/core/lib/experiments/experiments.yaml | 5 +++++ src/core/lib/experiments/rollouts.yaml | 2 ++ 5 files changed, 28 insertions(+) diff --git a/bazel/experiments.bzl b/bazel/experiments.bzl index a1b87eca1d6..29a92b05430 100644 --- a/bazel/experiments.bzl +++ b/bazel/experiments.bzl @@ -18,6 +18,7 @@ EXPERIMENT_ENABLES = { "call_status_override_on_cancellation": "call_status_override_on_cancellation", + "call_v3": "call_v3", "canary_client_privacy": "canary_client_privacy", "client_idleness": "client_idleness", "client_privacy": "client_privacy", diff --git a/src/core/lib/experiments/experiments.cc b/src/core/lib/experiments/experiments.cc index 23fd0d91640..8d94ee0df2d 100644 --- a/src/core/lib/experiments/experiments.cc +++ b/src/core/lib/experiments/experiments.cc @@ -29,6 +29,8 @@ const char* const description_call_status_override_on_cancellation = "with cancellation."; const char* const additional_constraints_call_status_override_on_cancellation = "{}"; +const char* const description_call_v3 = "Promise-based call version 3."; +const char* const additional_constraints_call_v3 = "{}"; const char* const description_canary_client_privacy = "If set, canary client privacy"; const char* const additional_constraints_canary_client_privacy = "{}"; @@ -191,6 +193,8 @@ const ExperimentMetadata g_experiment_metadata[] = { description_call_status_override_on_cancellation, additional_constraints_call_status_override_on_cancellation, nullptr, 0, kDefaultForDebugOnly, true}, + {"call_v3", description_call_v3, additional_constraints_call_v3, nullptr, 0, + false, true}, {"canary_client_privacy", description_canary_client_privacy, additional_constraints_canary_client_privacy, nullptr, 0, false, false}, {"client_idleness", description_client_idleness, @@ -293,6 +297,8 @@ const char* const description_call_status_override_on_cancellation = "with cancellation."; const char* const additional_constraints_call_status_override_on_cancellation = "{}"; +const char* const description_call_v3 = "Promise-based call version 3."; +const char* const additional_constraints_call_v3 = "{}"; const char* const description_canary_client_privacy = "If set, canary client privacy"; const char* const additional_constraints_canary_client_privacy = "{}"; @@ -455,6 +461,8 @@ const ExperimentMetadata g_experiment_metadata[] = { description_call_status_override_on_cancellation, additional_constraints_call_status_override_on_cancellation, nullptr, 0, kDefaultForDebugOnly, true}, + {"call_v3", description_call_v3, additional_constraints_call_v3, nullptr, 0, + false, true}, {"canary_client_privacy", description_canary_client_privacy, additional_constraints_canary_client_privacy, nullptr, 0, false, false}, {"client_idleness", description_client_idleness, @@ -557,6 +565,8 @@ const char* const description_call_status_override_on_cancellation = "with cancellation."; const char* const additional_constraints_call_status_override_on_cancellation = "{}"; +const char* const description_call_v3 = "Promise-based call version 3."; +const char* const additional_constraints_call_v3 = "{}"; const char* const description_canary_client_privacy = "If set, canary client privacy"; const char* const additional_constraints_canary_client_privacy = "{}"; @@ -719,6 +729,8 @@ const ExperimentMetadata g_experiment_metadata[] = { description_call_status_override_on_cancellation, additional_constraints_call_status_override_on_cancellation, nullptr, 0, kDefaultForDebugOnly, true}, + {"call_v3", description_call_v3, additional_constraints_call_v3, nullptr, 0, + false, true}, {"canary_client_privacy", description_canary_client_privacy, additional_constraints_canary_client_privacy, nullptr, 0, false, false}, {"client_idleness", description_client_idleness, diff --git a/src/core/lib/experiments/experiments.h b/src/core/lib/experiments/experiments.h index b9a6ecca096..ae5a44ca967 100644 --- a/src/core/lib/experiments/experiments.h +++ b/src/core/lib/experiments/experiments.h @@ -67,6 +67,7 @@ inline bool IsCallStatusOverrideOnCancellationEnabled() { return true; #endif } +inline bool IsCallV3Enabled() { return false; } inline bool IsCanaryClientPrivacyEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_CLIENT_IDLENESS inline bool IsClientIdlenessEnabled() { return true; } @@ -128,6 +129,7 @@ inline bool IsCallStatusOverrideOnCancellationEnabled() { return true; #endif } +inline bool IsCallV3Enabled() { return false; } inline bool IsCanaryClientPrivacyEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_CLIENT_IDLENESS inline bool IsClientIdlenessEnabled() { return true; } @@ -190,6 +192,7 @@ inline bool IsCallStatusOverrideOnCancellationEnabled() { return true; #endif } +inline bool IsCallV3Enabled() { return false; } inline bool IsCanaryClientPrivacyEnabled() { return false; } #define GRPC_EXPERIMENT_IS_INCLUDED_CLIENT_IDLENESS inline bool IsClientIdlenessEnabled() { return true; } @@ -246,6 +249,7 @@ inline bool IsWrrDelegateToPickFirstEnabled() { return true; } #else enum ExperimentIds { kExperimentIdCallStatusOverrideOnCancellation, + kExperimentIdCallV3, kExperimentIdCanaryClientPrivacy, kExperimentIdClientIdleness, kExperimentIdClientPrivacy, @@ -290,6 +294,10 @@ enum ExperimentIds { inline bool IsCallStatusOverrideOnCancellationEnabled() { return IsExperimentEnabled(kExperimentIdCallStatusOverrideOnCancellation); } +#define GRPC_EXPERIMENT_IS_INCLUDED_CALL_V3 +inline bool IsCallV3Enabled() { + return IsExperimentEnabled(kExperimentIdCallV3); +} #define GRPC_EXPERIMENT_IS_INCLUDED_CANARY_CLIENT_PRIVACY inline bool IsCanaryClientPrivacyEnabled() { return IsExperimentEnabled(kExperimentIdCanaryClientPrivacy); diff --git a/src/core/lib/experiments/experiments.yaml b/src/core/lib/experiments/experiments.yaml index a008eb40304..60ebc708152 100644 --- a/src/core/lib/experiments/experiments.yaml +++ b/src/core/lib/experiments/experiments.yaml @@ -47,6 +47,11 @@ expiry: 2024/04/01 owner: vigneshbabu@google.com test_tags: [] +- name: call_v3 + description: Promise-based call version 3. + expiry: 2024/06/01 + owner: ctiller@google.com + test_tags: [] - name: canary_client_privacy description: If set, canary client privacy diff --git a/src/core/lib/experiments/rollouts.yaml b/src/core/lib/experiments/rollouts.yaml index 8f895e2fbb2..6dd8df0613a 100644 --- a/src/core/lib/experiments/rollouts.yaml +++ b/src/core/lib/experiments/rollouts.yaml @@ -42,6 +42,8 @@ - name: call_status_override_on_cancellation default: debug +- name: call_v3 + default: false - name: canary_client_privacy default: false - name: client_idleness