2022-04-13: Git operations failing for some users
Incident DRI
Current Status
The feature flag audit_event_streaming_git_operations https://gitlab.com/gitlab-org/gitlab/-/issues/357211 was the cause of the errors.
Once we detected the issue, the flag was disabled which resolved it.
Summary for CMOC notice / Exec summary:
- Customer Impact:
Users of the git service are likely encountering intermittent errorsApproximately 8% of upload-pack requests (most git operations) failed on gitlab.com for the duration of the feature flag. - Service Impact: ServiceGit
- Impact Duration:
20:27 - 21:04 utc (38 minutes) - Root cause: Feature flag https://gitlab.com/gitlab-org/gitlab/-/issues/357211
Timeline
Recent Events (available internally only):
- Deployments
- Feature Flag Changes
- Infrastructure Configurations
- GCP Events (e.g. host failure)
- Gitlab.com Latest Updates
All times UTC.
2022-04-13
-
20:25- An engineer enables theaudit_event_streaming_git_operationsfeature flag. -
20:26- Frontend request error rates immediately begin to increase. -
20:58- @nnelson receives multiple pages from multiple alerts being fired simultaneously. -
20:58- @nnelson declares severity1 incident in Slack. -
21:00- @nnelson notes in the incident conference bridge that the site is responding normally and the incident severity should be downgraded. -
21:01- @nnelson pulled up the triage dashboard page and noticed that the error rate increase was highly correlated with a feature flag enablement. This is noted in the incident conference bridge call. -
21:01- @nnelson reaches out to the enabling engineer, informs of the elevated error rate, and invites to the incident conference bridge. -
21:04- The feature flag is disabled. -
21:06- @nnelson downgrades the incident severity to severity2 because the relevant errors are not causing complete outage for any users. -
21:12- @nnelson updates issue description with summary information. -
21:12- @skarbek confirms that disabling the feature flag returned the error rate to normal. -
21:12- Incident is marked as IncidentMitigated and the incident conference bridge is disbanded.
Create related issues
Use the following links to create related issues to this incident if additional work needs to be completed after it is resolved:
- Support contact request
- Corrective action
- Investigation followup
- Confidential issue
- QA investigation
- Infradev
Takeaways
- Something we learned from the incident:
- It may be helpful to have engineers monitor the GitLab Triage dashboard page for at least 10 minutes following the enablement of any feature flag. corrective action
- Things that were surprising or unexpected.
- Alerts were not triggered until precisely 30 minutes after the feature flag was enabled and error rates began to increase.
- So many alerts fired simultaneously that the
#productionslack channel was flooded with alert messages. This led the On-call engineer to over-react (an over-abundance of caution?) and declare severity level 1 incident.
- Things that went well during incident response.
- It was immediately apparent that the
gitlab.comsite was up and responsive, making it clear that this incident was not a severity1 . - It was also immediately clear that a feature flag annotation was highly correlated with the incidence of error rate increase, making it extremely easy to mitigate the situation.
- It was immediately apparent that the
Corrective Actions
Corrective actions should be put here as soon as an incident is mitigated, ensure that all corrective actions mentioned in the notes below are included.
- corrective action Following the enablement of any feature flag, engineers should monitor at least the GitLab Triage dashboard page for at least 10 minutes: https://gitlab.com/gitlab-com/gl-infra/reliability/-/issues/15605
Note: In some cases we need to redact information from public view. We only do this in a limited number of documented cases. This might include the summary, timeline or any other bits of information, laid out in out handbook page. Any of this confidential data will be in a linked issue, only visible internally. By default, all information we can share, will be public, in accordance to our transparency value.
Click to expand or collapse the Incident Review section.
Incident Review
The audit_event_streaming_git_operations feature flag was enabled. This caused front-end request error rates to increase. Thirty minutes later, multiple alerts fired simultaneously, causing the EOC to be receive multiple pages all at once.
-
Ensure that the exec summary is completed at the top of the incident issue, the timeline is updated and relevant graphs are included in the summary -
If there are any corrective action items mentioned in the notes on the incident, ensure they are listed in the "Corrective Action" section -
Fill out relevant sections below or link to the meeting review notes that cover these topics
Customer Impact
-
Who was impacted by this incident? (i.e. external customers, internal customers)
-
external customers,internal customers, anyone using thegitservice
-
-
What was the customer experience during the incident? (i.e. preventing them from doing X, incorrect display of Y, ...)
- Occasional 500 errors.
-
How many customers were affected?
- Less than 5% of all users.
-
If a precise customer impact number is unknown, what is the estimated impact (number and ratio of failed requests, amount of traffic drop, ...)?
- ...
What were the root causes?
- The git request error rates increase incident was caused by the enablement of the
audit_event_streaming_git_operationsfeature flag. - It is not yet clear to this engineer (@nnelson) what the root cause of the error rates increase incident was with respect to the enabled feature flag.
Incident Response Analysis
-
How was the incident detected?
- Multiple alerts for multiple services were triggered and the EOC received multiple simultaneous pages.
-
How could detection time be improved?
- The alerting window might be tightened for at least the service closest to the user interface.
-
How was the root cause diagnosed?
- The gitlab.com triage dashboard was pulled up and a feature flag annotation was observed to be highly correlated with the elevated error rate incidence.
-
How could time to diagnosis be improved?
- The diagnosis suspicion took less than 1 minute to develop.
- The diagnosis confirmation required an experimental disablement of the feature flag identified by the initial cursory troubleshooting.
- The diagnosis confirmation could have been speedier had feature flag enablement been required to be followed by at least 10 minutes of monitoring relevant services and front-end dashboards for such incidences of error rate increases.
- Such a monitoring requirement would have led the enabling engineer to be more immediately available for requested actions such as the attempted experimental mitigation response.
-
How did we reach the point where we knew how to mitigate the impact?
- Diagnostic suspicion followed by confirmation through experimental action.
-
How could time to mitigation be improved?
- Require engineers to remain available to respond quickly to pings for a certain period of time following feature flag enablement.
-
What went well?
- Error rate increase incidence was correlated quickly and correctly to feature flag enablement.
Post Incident Analysis
The feature flag in question was a feature community contribution from JiHu to add more streaming audit events to git operations. It's unclear given how the 500 errors occurred since streaming audit events is a fairly new feature.
The merge request went through groupcompliance to be reviewed, though no performance issues were anticipated at the time.
@dennis will be working with engineers to investigate the root cause of the errors further.
-
Did we have other events in the past with the same root cause?
- We've had a similar situation with performance degradation where logging audit events for git push operation, ultimately resulting in us deprecating and removing the feature planned for 15.0.
-
Do we have existing backlog items that would've prevented or greatly reduced the impact of this incident?
- @dennis: Not currently, this was using a recent feature, streaming audit events, introduced in 14.5 but enabled by default in 14.7, and this is the first type of streaming audit event pertaining to git operations.
- Was this incident triggered by a change (deployment of code or change to infrastructure)? If yes, link the issue.
What went well?
-
- We quickly discovered a recently enabled feature flag through the Gitlab Triage dashboard page which led to speedy mitigation of the impact, as well as pulling in the engineer involved to further diagnose.
Guidelines
Resources
- If the Situation Zoom room was utilised, recording will be automatically uploaded to Incident room Google Drive folder (private)