Duplicates in CI needs causes 500 response
### Summary Hit 'Create new pipeline' and see a 500 error. ### Steps to reproduce You need a `.gitlab-ci.yaml` with somethings like ```yaml job_1: stage: test script: do something job_2: stage: build script: do something else needs: ['job_1', 'job_1'] ``` ### Example Project https://gitlab.com/mcfedr/ci-needs-bug/pipelines ### What is the current *bug* behavior? 500 error. ### What is the expected *correct* behavior? CI Lint error Text for the error: `<job1> has duplicate entries in the needs section.` ### Relevant logs and/or screenshots ```json { "method": "POST", "path": "/my_project_app/my_project_app/pipelines", "format": "html", "controller": "Projects::PipelinesController", "action": "create", "status": 500, "duration": 333.56, "view": 0.0, "db": 74.82, "time": "2019-11-28T14:38:17.931Z", "params": [{ "key": "utf8", "value": "✓" }, { "key": "authenticity_token", "value": "[FILTERED]" }, { "key": "pipeline", "value": { "ref": "dev" } }, { "key": "namespace_id", "value": "my_project_app" }, { "key": "project_id", "value": "my_project_app" }], "remote_ip": "78.137.6.142", "user_id": 2, "username": "mcfedr", "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:70.0) Gecko/20100101 Firefox/70.0", "queue_duration": null, "rugged_calls": 3, "rugged_duration_ms": 32.36, "correlation_id": "aSjNGDOR3Ha", "cpu_s": 0.19548780199997395, "exception": { "class": "ActiveRecord::RecordNotUnique", "message": "PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \"index_ci_build_needs_on_build_id_and_name\"\nDETAIL: Key (build_id, name)=(299299, test) already exists.\n: INSERT INTO \"ci_build_needs\" (\"build_id\", \"name\") VALUES (299299, 'test') RETURNING \"id\"", "backtrace": ["lib/gitlab/ci/pipeline/chain/create.rb:11:in `perform!'", "lib/gitlab/ci/pipeline/chain/sequence.rb:19:in `block in build!'", "lib/gitlab/ci/pipeline/chain/sequence.rb:16:in `each'", "lib/gitlab/ci/pipeline/chain/sequence.rb:16:in `build!'", "app/services/ci/create_pipeline_service.rb:53:in `execute'", "app/controllers/projects/pipelines_controller.rb:62:in `create'", "lib/gitlab/session.rb:11:in `with_session'", "app/controllers/application_controller.rb:450:in `set_session_storage'", "app/controllers/application_controller.rb:444:in `set_locale'"] } } ``` ### Possible fixes (If you can, link to the line of code that might be responsible for the problem)
issue