diff options
author | Toon Claes <toon@gitlab.com> | 2022-07-05 21:33:49 +0300 |
---|---|---|
committer | Toon Claes <toon@gitlab.com> | 2022-07-05 21:33:49 +0300 |
commit | bfd3175bf92587f21d17e2107e1e7e2ee0fa69bc (patch) | |
tree | abafc8ffefa8d9859ab8c613c873af469671b417 | |
parent | e133fbe04c5787ec9a624a6218fbd2d65a13e290 (diff) | |
parent | 8132c2bb33acbe76fbb86500d8d5fef9e063bb30 (diff) |
Merge branch 'pks-feature-flags-with-rollout-issue-url' into 'master'
featureflags: Require version and rollout issue URL for flags
Closes #4312
See merge request gitlab-org/gitaly!4676
13 files changed, 68 insertions, 15 deletions
diff --git a/internal/git2go/featureflags_test.go b/internal/git2go/featureflags_test.go index 1ea54df52..06741fb05 100644 --- a/internal/git2go/featureflags_test.go +++ b/internal/git2go/featureflags_test.go @@ -35,8 +35,8 @@ func (b *Executor) FeatureFlags(ctx context.Context, repo repository.GitRepo) (f } var ( - featureA = featureflag.NewFeatureFlag("feature-a", false) - featureB = featureflag.NewFeatureFlag("feature-b", true) + featureA = featureflag.NewFeatureFlag("feature-a", "", "", false) + featureB = featureflag.NewFeatureFlag("feature-b", "", "", true) ) func TestFeatureFlagsExecutor_FeatureFlags(t *testing.T) { diff --git a/internal/metadata/featureflag/featureflag.go b/internal/metadata/featureflag/featureflag.go index edb0f8b16..70f90d2d9 100644 --- a/internal/metadata/featureflag/featureflag.go +++ b/internal/metadata/featureflag/featureflag.go @@ -69,7 +69,10 @@ type FeatureFlag struct { } // NewFeatureFlag creates a new feature flag and adds it to the array of all existing feature flags. -func NewFeatureFlag(name string, onByDefault bool) FeatureFlag { +// The name must be of the format `some_feature_flag`. Accepts a version and rollout issue URL as +// input that are not used for anything but only for the sake of linking to the feature flag rollout +// issue in the Gitaly project. +func NewFeatureFlag(name, version, rolloutIssueURL string, onByDefault bool) FeatureFlag { featureFlag := FeatureFlag{ Name: name, OnByDefault: onByDefault, diff --git a/internal/metadata/featureflag/ff_cherry_pick_structured_errors.go b/internal/metadata/featureflag/ff_cherry_pick_structured_errors.go index 65e67b0ed..594fddf3c 100644 --- a/internal/metadata/featureflag/ff_cherry_pick_structured_errors.go +++ b/internal/metadata/featureflag/ff_cherry_pick_structured_errors.go @@ -2,4 +2,9 @@ package featureflag // CherryPickStructuredErrors enables the UserCherryPick RPC to return // structured errors. -var CherryPickStructuredErrors = NewFeatureFlag("cherry_pick_structured_errors", false) +var CherryPickStructuredErrors = NewFeatureFlag( + "cherry_pick_structured_errors", + "v15.2.0", + "https://gitlab.com/gitlab-org/gitaly/-/issues/4325", + false, +) diff --git a/internal/metadata/featureflag/ff_exact_pagination_token_match.go b/internal/metadata/featureflag/ff_exact_pagination_token_match.go index 607896507..ad9392f80 100644 --- a/internal/metadata/featureflag/ff_exact_pagination_token_match.go +++ b/internal/metadata/featureflag/ff_exact_pagination_token_match.go @@ -2,4 +2,9 @@ package featureflag // ExactPaginationTokenMatch enables exact matching for provided pagination tokens and // returns an error if the match is not found. -var ExactPaginationTokenMatch = NewFeatureFlag("exact_pagination_token_match", true) +var ExactPaginationTokenMatch = NewFeatureFlag( + "exact_pagination_token_match", + "v14.10.0", + "https://gitlab.com/gitlab-org/gitaly/-/issues/3817", + true, +) diff --git a/internal/metadata/featureflag/ff_git_v2361.go b/internal/metadata/featureflag/ff_git_v2361.go index 693206477..869f3d8e6 100644 --- a/internal/metadata/featureflag/ff_git_v2361.go +++ b/internal/metadata/featureflag/ff_git_v2361.go @@ -1,4 +1,9 @@ package featureflag // GitV2361Gl1 will enable use of Git v2.36.1.gl1. -var GitV2361Gl1 = NewFeatureFlag("git_v2361gl1", false) +var GitV2361Gl1 = NewFeatureFlag( + "git_v2361gl1", + "v15.0.0", + "https://gitlab.com/gitlab-org/gitaly/-/issues/4194", + false, +) diff --git a/internal/metadata/featureflag/ff_go_find_license.go b/internal/metadata/featureflag/ff_go_find_license.go index 95639870e..a3c63b2c9 100644 --- a/internal/metadata/featureflag/ff_go_find_license.go +++ b/internal/metadata/featureflag/ff_go_find_license.go @@ -1,4 +1,9 @@ package featureflag // GoFindLicense enables Go implementation of FindLicense -var GoFindLicense = NewFeatureFlag("go_find_license", false) +var GoFindLicense = NewFeatureFlag( + "go_find_license", + "v14.3.0", + "https://gitlab.com/gitlab-org/gitaly/-/issues/3759", + false, +) diff --git a/internal/metadata/featureflag/ff_praefect_generated_paths.go b/internal/metadata/featureflag/ff_praefect_generated_paths.go index 4109bd636..8858043ca 100644 --- a/internal/metadata/featureflag/ff_praefect_generated_paths.go +++ b/internal/metadata/featureflag/ff_praefect_generated_paths.go @@ -1,4 +1,9 @@ package featureflag // PraefectGeneratedReplicaPaths will enable Praefect generated replica paths for new repositories. -var PraefectGeneratedReplicaPaths = NewFeatureFlag("praefect_generated_replica_paths", false) +var PraefectGeneratedReplicaPaths = NewFeatureFlag( + "praefect_generated_replica_paths", + "v15.0.0", + "https://gitlab.com/gitlab-org/gitaly/-/issues/4218", + false, +) diff --git a/internal/metadata/featureflag/ff_rate_limiter.go b/internal/metadata/featureflag/ff_rate_limiter.go index 7207e4b37..7bdbe9afa 100644 --- a/internal/metadata/featureflag/ff_rate_limiter.go +++ b/internal/metadata/featureflag/ff_rate_limiter.go @@ -2,4 +2,9 @@ package featureflag // RateLimit will enable the rate limiter to reject requests beyond a configured // rate. -var RateLimit = NewFeatureFlag("rate_limit", false) +var RateLimit = NewFeatureFlag( + "rate_limit", + "v14.10.0", + "https://gitlab.com/gitlab-org/gitaly/-/issues/4181", + false, +) diff --git a/internal/metadata/featureflag/ff_repo_size_revlist.go b/internal/metadata/featureflag/ff_repo_size_revlist.go index 8be87e482..b630ccfc6 100644 --- a/internal/metadata/featureflag/ff_repo_size_revlist.go +++ b/internal/metadata/featureflag/ff_repo_size_revlist.go @@ -2,4 +2,9 @@ package featureflag // RevlistForRepoSize enables the RepositorySize RPC to use git rev-list to // calculate the disk usage of the repository. -var RevlistForRepoSize = NewFeatureFlag("revlist_for_repo_size", false) +var RevlistForRepoSize = NewFeatureFlag( + "revlist_for_repo_size", + "v14.10.0", + "https://gitlab.com/gitlab-org/gitaly/-/issues/4317", + false, +) diff --git a/internal/metadata/featureflag/ff_run_cmd_in_cgroup.go b/internal/metadata/featureflag/ff_run_cmd_in_cgroup.go index 5c84995b1..a92948c4e 100644 --- a/internal/metadata/featureflag/ff_run_cmd_in_cgroup.go +++ b/internal/metadata/featureflag/ff_run_cmd_in_cgroup.go @@ -1,4 +1,9 @@ package featureflag // RunCommandsInCGroup allows all commands to be run within a cgroup -var RunCommandsInCGroup = NewFeatureFlag("run_cmds_in_cgroup", false) +var RunCommandsInCGroup = NewFeatureFlag( + "run_cmds_in_cgroup", + "v14.10.0", + "https://gitlab.com/gitlab-org/gitaly/-/issues/4102", + false, +) diff --git a/internal/metadata/featureflag/ff_transactional_restore_custom_hooks.go b/internal/metadata/featureflag/ff_transactional_restore_custom_hooks.go index 8f3e2337d..c8b8d9ee2 100644 --- a/internal/metadata/featureflag/ff_transactional_restore_custom_hooks.go +++ b/internal/metadata/featureflag/ff_transactional_restore_custom_hooks.go @@ -2,4 +2,9 @@ package featureflag // TransactionalRestoreCustomHooks will use transactional voting in the // RestoreCustomHooks RPC -var TransactionalRestoreCustomHooks = NewFeatureFlag("tx_restore_custom_hooks", false) +var TransactionalRestoreCustomHooks = NewFeatureFlag( + "tx_restore_custom_hooks", + "v15.0.0", + "https://gitlab.com/gitlab-org/gitaly/-/issues/4203", + false, +) diff --git a/internal/metadata/featureflag/ff_user_rebase_confirmable_improved_error_handling.go b/internal/metadata/featureflag/ff_user_rebase_confirmable_improved_error_handling.go index 9f49b4559..1065b92e8 100644 --- a/internal/metadata/featureflag/ff_user_rebase_confirmable_improved_error_handling.go +++ b/internal/metadata/featureflag/ff_user_rebase_confirmable_improved_error_handling.go @@ -4,4 +4,9 @@ package featureflag // RPC. When this flag is disabled many error cases were returning successfully with an error message // embedded in the response. With this flag enabled, this is converted to return real gRPC errors with // structured errors. -var UserRebaseConfirmableImprovedErrorHandling = NewFeatureFlag("user_rebase_confirmable_improved_error_handling", false) +var UserRebaseConfirmableImprovedErrorHandling = NewFeatureFlag( + "user_rebase_confirmable_improved_error_handling", + "v14.10.0", + "https://gitlab.com/gitlab-org/gitaly/-/issues/4326", + false, +) diff --git a/internal/praefect/coordinator_test.go b/internal/praefect/coordinator_test.go index f728744c0..0b8201f33 100644 --- a/internal/praefect/coordinator_test.go +++ b/internal/praefect/coordinator_test.go @@ -2689,8 +2689,8 @@ func TestNewRequestFinalizer_contextIsDisjointedFromTheRPC(t *testing.T) { func TestStreamParametersContext(t *testing.T) { // Because we're using NewFeatureFlag, they'll end up in the All array. - enabledFF := featureflag.NewFeatureFlag("default-enabled", true) - disabledFF := featureflag.NewFeatureFlag("default-disabled", false) + enabledFF := featureflag.NewFeatureFlag("default-enabled", "", "", true) + disabledFF := featureflag.NewFeatureFlag("default-disabled", "", "", false) type expectedFlag struct { flag featureflag.FeatureFlag |