Backend: Rollout limits for directed acyclic graph on gitlab.com
The new directed acyclic graph feature carries some risk of performance issues until https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/31768 is implemented:
Note that one day one of the launch, we are temporarily limiting the maximum number of jobs that a single job can need in the
needs:
array. Track our infrastructure issue for details on the current limit.
This limits the following types of situations, where the number of a jobs that a single job wants to depend on is over the limit:
my_job:
needs: [dependency1, dependency2, ...]
...
As such, we plan to roll it out as follows:
- On the 22nd the feature will be shipped with a small limit (
5
). If someone goes over the limit, they will receive a pipeline creation error (rspec: one job can only need 5 others, but you have listed 6. See needs keyword documentation for more details
) - @ayufan will monitor over a few days to determine the performance characteristics.
- If the feature is performant, we will set the feature to a large limit (
50
). It will remain there for the next monitoring period. - If we see serious performance issues, we will disable the feature entirely. Users pipelines that use the DAG will still run, but will follow stage sequencing.
The feature flag for toggling between 50
and 5
is ci_dag_limit_needs
; it will limit to 5 when enabled. The feature flag for turning the feature on or off completely is ci_dag_support
. We will need infrastructure support for the monitoring and toggling of necessary feature flags per the above plan.
Once the limit has been removed, we should update the needs:
section in the yaml docs to remove the reference to this issue.