2021-12-09: Cannot load pipeline graph on staging
Current Status
The incident has been mitigated, by reverting Fix job depencies view in the pipeline graph MR with this MR.
Timeline
Recent Events (available internally only):
- Deployments
- Feature Flag Changes
- Infrastructure Configurations
- GCP Events (e.g. host failure)
All times UTC.
2021-12-09
-
07:19
- @tkuah declares incident in Slack. -
07:21
- @tkuah identifies an example of a broken pipeline graph page -
07:21
- @stanhu discovers anundefined method 'type' for #<Ci::BuildNeed:0x00007f65327dd5e0>
in the logs - NoMethodErrorGraphqlController#execute -
07:25
- @ggillies notifies @hphilipps and @rpereira2 in case this is a bug and we need to not promote or rollback in gstg -
07:38
- @tkuah observes this happening in Production -
07:40
- Team investigates the GraphQL query -
07:41
- @engwan determines that https://gitlab.com/gitlab-org/gitlab/-/pipelines/425678073 does not load on canary -
07:41
- @engwan suggest we drain canary because it looks fine on main -
07:41
- @engwan determines that https://gitlab.com/gitlab-org/gitlab/-/pipelines/425678073 disables the canary cookie and is able to load it -
07:43
- @tkuah confirms the problem is on Canary and informs @hphilipps and @rpereira2 -
07:44
- @stanhu determines there is a problem with the id inprevious_stage_jobs_or_needs
-
07:50
- Canary (gprd-cny) is drained. -
07:51
- @engwan determines theprevious_stage_jobs_or_needs
field expects aTypes::Ci::JobType
but gets a aCi::BuildNeed
which cannot be serialized into aTypes::Ci::JobType
and as a result the id is not being set appropriately -
07:51
- @engwan determines theprevious_stage_jobs_or_needs
field was introduced in Fix job depencies view in the pipeline graph MR -
08:00
- @engwan determined that we need to fix the GraphQL backend but reverting Fix job depencies view in the pipeline graph MR is the easiest way to mitigate the problem and not use this field for now. -
08:08
- Submitted Merge for this MR to revert the Fix job depencies view in the pipeline graph MR and set to MWPS -
08:59
- @hphilipps checks if we plan on merging the change or work on another mitigation because -
09:04
- The pipeline failed -
09:13
- @tkuah starts a new pipeline and it is merged -
09:17
- @hphilipps turned on the auto_deploy_tag_latest feature flag to trigger a new auto_deploy pipeline -
09:38
- We got a new auto_deploy pipeline containing the fix: 14.6.202112091036 so @hphilipps disabled the auto_deploy_tag_latest again -
09:38
- Incident is Mitigated -
11:23
- Incident Mitigated label is assigned to this incident
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: Make previousStageJobsOrNeeds return a union
- corrective action: Add an additional QA Spec
- corrective action: Rename previousStageJobsOrNeeds to previous_stage_jobs_or_needed_jobs
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
-
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 were impacted and likely internal as well. Any user who executed a pipeline that used the
needs
feature.
- External customers were impacted and likely internal as well. Any user who executed a pipeline that used the
-
What was the customer experience during the incident? (i.e. preventing them from doing X, incorrect display of Y, ...)
- The pipeline graph was not being displayed to some users and their deployments were being blocked.
-
How many customers were affected?
- According to Sentry, there were 120 unique users affected.
-
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?
- ...
Incident Response Analysis
-
How was the incident detected?
- ...
-
How could detection time be improved?
- ...
-
How was the root cause diagnosed?
- ...
-
How could time to diagnosis be improved?
- ...
-
How did we reach the point where we knew how to mitigate the impact?
- ...
-
How could time to mitigation be improved?
- ...
-
What went well?
- ...
Post Incident Analysis
-
Did we have other events in the past with the same root cause?
- ...
-
Do we have existing backlog items that would've prevented or greatly reduced the impact of this incident?
- ...
-
Was this incident triggered by a change (deployment of code or change to infrastructure)? If yes, link the issue.
- ...
Lessons Learned
- ...
Guidelines
Resources
- If the Situation Zoom room was utilised, recording will be automatically uploaded to Incident room Google Drive folder (private)