Rollout New Feature Flags

Rollout New Feature Flags

Phase 1: Rollout to Internal GitLab Customers

  • Enable new flags for https://gitlab.com/gitlab-services/version-gitlab-com/ (groupexpansion and ~"group::telemetry")
  • Enable new flags for https://gitlab.com/gitlab-org/customers-gitlab-com/ (~"group::fulfillment")

Rollback strategy

If we disable the feature to rollback, users may have created new version flags while the feature was enabled.

In this scenario, new version feature flags that were created while the feature was enabled continue to be returned to Unleash clients, but otherwise behave as if they do not exist.

Details

Unleash clients continue to receive existing new version flags that were created while the new version flags were enabled. This is so that switching off the new features does not cause client code consuming the Unleash feature flags to change behavior.

  • https://gitlab.com/gitlab-org/gitlab/-/blob/0f27684a52276a4a8faa11b2a52f44465161ee71/ee/lib/api/unleash.rb#L78

For the UI:

  • The UI will no longer get new version feature flags on the index page
  • The view / edit a feature flag page will behave as if the new version flag does not exist (returning a 404, not found)
  • New version flags can no longer be created
  • Or deleted
  • Or updated

For the Public CRUD API (/api/v4/feature_flags):

  • GET requests for a list no longer return existing new version flags. They will still return legacy flags, filtering out the new version flags.
  • GET requests for a single new version flag will return a 404 not found
  • POST requests to create a new version flag will return a 422 and not create the flag
  • PUT requests will return a 404 not found
  • DELETE requests will return a 404 not found

Phase 2: Rollout to GitLab.com

  • Enable new flags for all of GitLab.com (Done in %13.1)

Phase 3: Rollout to Self-Managed

  • Default feature flag to enabled (Done in %13.2 with !35192 (merged))

Phase 4: Clean up

Remove feature flag. To be done in #258831 (closed).

Notes

New version flags are turned off and on via the :feature_flags_new_version feature flag.

Edited Nov 06, 2020 by Jason Goodman
Assignee Loading
Time tracking Loading