Pipeline view causes browser to become unresponsive when you have multiple matrix jobs with needs:
Summary
When you create a pipeline similar to the one defined below with multiple matrix jobs and where each job needs:
the previous job. When you then visit the pipeline the browser becomes unresponsive (tested with latest Chrome/Firefox and with other users).
Steps to reproduce
Run the following pipeline:
stages:
- stage1
- stage2
- stage3
- stage4
job1:
stage: stage1
script:
- echo "job1 $VARIANT"
rules:
- if: $CI_MERGE_REQUEST_IID
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
parallel:
matrix:
- VARIANT:
- one
- two
- three
- four
- five
- six
- seven
- eight
- nine
- ten
job2:
stage: stage2
script:
- echo "job2 $VARIANT"
needs: ["job1"]
rules:
- if: $CI_MERGE_REQUEST_IID
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
parallel:
matrix:
- VARIANT:
- one
- two
- three
- four
- five
- six
- seven
- eight
- nine
- ten
job3:
stage: stage3
script:
- echo "job3 $VARIANT"
needs: ["job2"]
rules:
- if: $CI_MERGE_REQUEST_IID
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
parallel:
matrix:
- VARIANT:
- one
- two
- three
- four
- five
- six
- seven
- eight
- nine
- ten
job4:
stage: stage4
script:
- echo "job4 $VARIANT"
needs: ["job3"]
rules:
- if: $CI_MERGE_REQUEST_IID
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
parallel:
matrix:
- VARIANT:
- one
- two
- three
- four
- five
- six
- seven
- eight
- nine
- ten
Example Project
https://gitlab.com/JamesSeymour/test-gitlab-bug/-/pipelines/358746481
What is the current bug behavior?
The browser becomes unresponsive.
What is the expected correct behavior?
The browser is responsive and shows the pipeline.
Relevant logs and/or screenshots
Not required - Should be occur if anyone navigates to https://gitlab.com/JamesSeymour/test-gitlab-bug/-/pipelines/358746481
Output of checks
This bug happens on GitLab.com
Results of GitLab environment info
None
Results of GitLab application Check
None
Possible fixes
I don't have a fix, but it seems like its hanging in the getAllAncestors()
method in the parsing_utils.js
- You can see this if you:
- Open dev tools before navigating to the page.
- Navigate to the pipeline.
- Page hangs.
- Pause execution and it will always stop in the
getAllAncestors()
method.
It looks to me like its just recusing into itself forever here.