Epic Work Items Rollout Plan
Conditions for Go vs No Go
Engineering
-
Workstream 2: Epic Work items Sync (&12738 - closed) completed -
Workstream 4: Read shared associations from Leg... (&12751 - closed) completed -
Epic data syncing backfilling (&13056 - closed) completed -
Data is in sync on SaaS -
Fallback plan in place with guidelines how to debug -
Rollout on gitlab-organdgitlab-comwithout any issues for at least 3 days in production
Product
-
Epics QA #472056 (closed)
Fallback plan and monitoring
Monitoring
- Check sync events on the Sync Error Dashboard
- Sentry Errors
- DebugBear (WebVitals Performance)
- Sentry Performance
What do we do in the case of mismatches after rollout?
- Evaluate with if it's an actual mismatch or false positive (check the prod database)
- Either you have read access to a replica, or you can use postgres.ai
- If there is replica access but you need to check data is required, you can request prod access via teleport
- Evaluate the impact (how many records are affected)
- The PLSQL script is a good starting point for the most common data we need to check and the amount of records affected
- Check with Product if the mismatch is a blocker for GA
- Depending on the data, product may decide that it's okay to still move forward with GA
- Evaluate if the mismatch comes from the WorkItem > Legacy Epic syncing or from Legacy Epic > WorkItem syncing
- When a mismatch comes from WorkItem to Legacy Epic syncing, it might be easier to rewrite the APIs to read from the WorkItem and get rid of the Legacy Epic data as SSoT.
- Evaluate if we need a full re-sync or if we could read from the legacy epic in the meantime
- To prevent a full re-sync of the data, we could also solve some mismatches by reading from the legacy epic.
- Use this approach with caution as it only works when the logic on the WorkItem side is correct.
How to rollout
Feature Flags
| Feature Flag | Description |
|---|---|
|
|
Group-based feature flag |
|
|
Group-based feature flag |
|
|
Group-based feature flag. |
Plan Team Member dogfooding
gitlab-org
-
Enable work_items_rolledup_datesforgitlab-org -
Enable epic_and_work_item_associations_unificationforgitlab-org -
Enable work_item_epicsforgitlab-org
gitlab-com
-
Enable work_items_rolledup_datesforgitlab-com -
Enable epic_and_work_item_associations_unificationforgitlab-com -
Enable work_item_epicsforgitlab-com
gitlab-data
-
Enable work_items_rolledup_datesforgitlab-data -
Enable epic_and_work_item_associations_unificationforgitlab-data -
Enable work_item_epicsforgitlab-data
GitLab Team Member dogfooding
-
Enable work_item_epics_rolloutfor gitlab team members. See docs for how to enable it on a feature group/chatops run feature set --feature-group=gitlab_team_members work_item_epics_rollout true
Before SaaS rollout
-
Get Change epic work items rollout per root-group (#478191 - closed) merged if we agree that we want to continue with SaaS rollout -
Change work_item_epicsfeature flag to only check for the root ancestor -
Enable work_items_rolledup_datesObserve the data as this changes the behaviour of dates calculation for groups that do not havework_item_epicsenabled. If all is fine the flag can be removed -
Enable epic_and_work_item_associations_unificationfor all and observe any potential performance problems. If all is fine the flag can be removed
-
-
Enable work_item_epics_rolloutfor all (This would enable everyone to see the epic work items ongitlab-org/gitlab-com). The flag can be removed too.
SaaS rollout
-
Enable for all
Since
work_item_epicswill enable work item epics per group with a percentage based rollout, we are not able to guarantee that the following feature flags are enabled for the same groups. For this reason we need to enable them for all.-
epic_and_work_item_associations_unification-
⚠️ ️ This feature flag must not be rolled back once it has been rolled out to a group! Otherwise users would not see data they modified on the work item side.
-
-
work_items_rolledup_dates
-
-
Use a Percentage of actors rollout for
work_item_epicsPercentage rollout steps rollout steps:
-
10% -
25% (after 12hs) -
50% (after 12hs) -
75% (after 12hs) -
100% (after 12hs)
-
Before SM rollout
-
Check service ping metrics introduced by Work Item Epic Service Ping metrics (!161331 - merged) to make sure data is synced correctly
SM rollout
-
Enable work_item_epicsby default -
Enable work_items_rolledup_datesby default -
Enable epic_and_work_item_associations_unificationby default
How to roll back
In the case if something goes wrong:
When only rolled out to plan team members
- Disable
work_item_epicsongitlab-org. It's fine to enable again ongitlab-org/plan-stage
When already rolled out to gitlab team members
- Either disable
work_item_epicsforgitlab-org, or if we're fine to have plan-team members still with access, restrict feature flag actors onwork_item_epics_rollout
When already rolled out to SaaS
- Disable
work_item_epics - Disable
work_item_epics_rollout - Potentially: Disable
work_items_rolledup_dates- We might not need to disable it. The cases when we should disable it are: syncing mismatches for dates, and syncing mismatches for the child hierarchy
Timeline
| Date | Description | Notes |
|---|---|---|
| Aug 12 | Finish pre-checks. Make sure all data is in sync |
|
| Aug 12 |
Plan-team dogfooding live 17.4 Enable epic work items on |
|
| Aug 14 |
Plan-team dogfooding live Enable epic work items on |
|
| Aug 14 | Pre-checks. Make sure all data is in sync |
|
| Aug 14 |
GitLab Team member dogfooding live Enable |
|
| Sept 4 |
Enable for all users of |
|
| Before | Pre-checks. Make sure all data is in sync on SaaS |
|
| October 10 |
SaaS go/no-go decision |
|
| October 15 |
Enable on SaaS incrementally 17.6 |
|
| Before | Pre-checks, Make sure all data is in sync for SM customers as reported by service ping |
|
| TBC |
SM go/no-go decision |
|
| December 19 |
SM live with 17.7 |
|