Furkan Ayhan activity https://gitlab.com/furkanayhan 2026-03-17T10:35:45Z tag:gitlab.com,2026-03-17:5212114486 Furkan Ayhan commented on epic #6044 at GitLab.org 2026-03-17T10:35:45Z furkanayhan Furkan Ayhan [email protected]

@manuelgrabowski @fabiopitino @rutshah @dhershkovitch I wanted to raise this as an additional performance-oriented motivation for prioritizing the duplicate pipeline problem; solving it wouldn't just fix the functional issues, but would also eliminate a meaningful amount of wasted infrastructure work on pipelines we end up discarding.

tag:gitlab.com,2026-03-17:5212110609 Furkan Ayhan commented on epic #6044 at GitLab.org 2026-03-17T10:35:01Z furkanayhan Furkan Ayhan [email protected]

Introduction

As we know, this problem has broad impact:

I want to highlight another perspective of this problem; performance (resource waste): Duplicate pipelines increase the compute and infrastructure costs.

The Performance Problem

Beyond the functional issues above, there's a significant infrastructure performance cost we're paying unnecessarily.

Looking at the pipeline creation chain in Ci::CreatePipelineService, the SEQUENCE processes steps in this order (simplified):

 1. Build
 2. Validate::Abilities
 3. Validate::Repository
 4. Build::Associations
 5. Limit::RateLimit
 6. Validate::SecurityOrchestrationPolicy
 7. AssignPartition
 8. PipelineExecutionPolicies::EvaluatePolicies
 9. Skip
10. Validate::Config
11. Config::Content          ← Fetches CI config content
12. Config::Process          ← THE EXPENSIVE STEP: parses YAML, resolves includes, expands variables, creates jobs
13. StopLinting
14. Validate::AfterConfig
15. RemoveUnwantedChatJobs
16. SeedBlock
17. EvaluateWorkflowRules   ← DUPLICATE PIPELINE DETECTION HAPPENS HERE (too late!)
18. Seed

The key problem: EvaluateWorkflowRules runs after Config::Process. Config::Process is an expensive step in the chain; it parses the full YAML, fetches all include: files (potentially many Gitaly/network calls to other projects, remote URLs, components), expands variables, resolves extends:, etc. We have a 30-second timeout on config processing, and recently we've been hitting it more frequently due to infra issues.

This means that for every duplicate pipeline that will ultimately be rejected by workflow:rules, we are:

  • Processing the entire CI config (YAML parsing, include resolution, variable expansion)
  • Making Gitaly calls to fetch included files from other projects
  • Making network calls for remote includes and CI components
  • Consuming Sidekiq worker time for the full config processing duration
  • Using database connections for variable lookups, project access checks, etc.
  • All for nothing; the pipeline gets filtered out at step 17 anyway

Solving this would free up resources we use.

Logs if you're interested:

https://log.gprd.gitlab.net/app/r/s/cC4GH

Screenshot_2026-03-17_at_11.36.36

tag:gitlab.com,2026-03-17:5211973156 Furkan Ayhan deleted project branch revert-4b9ecfc2 at GitLab.org / GitLab 2026-03-17T10:06:15Z furkanayhan Furkan Ayhan [email protected]

Furkan Ayhan (0df72fd2) at 17 Mar 10:06

tag:gitlab.com,2026-03-17:5211971925 Furkan Ayhan pushed to project branch master at GitLab.org / GitLab 2026-03-17T10:05:59Z furkanayhan Furkan Ayhan [email protected]

Furkan Ayhan (9c98287d) at 17 Mar 10:05

Merge branch 'revert-4b9ecfc2' into 'master'

... and 1 more commit

tag:gitlab.com,2026-03-17:5211969462 Furkan Ayhan accepted merge request !227624: Revert "Merge branch '584573-fix-parallel-matrix-job-name-length-validation' into 'master'" at GitLab.org / GitLab 2026-03-17T10:05:28Z furkanayhan Furkan Ayhan [email protected]

Purpose of revert

Slack message (Internal) about possible incidents in customer pipelines because of this change.

We are reverting this and allowing to use job names for more than 255 chars.

Checklist

Milestone info

  • I am reverting something in the current milestone. No changelog is needed, and I've added a ~"regression:*" label.
  • I am reverting something in a different milestone. A changelog is needed, and I've removed the ~"regression:*" label.

#584573

tag:gitlab.com,2026-03-17:5211876328 Furkan Ayhan approved merge request !227624: Revert "Merge branch '584573-fix-parallel-matrix-job-name-length-validation' into 'master'" at GitLab.org / GitLab 2026-03-17T09:46:50Z furkanayhan Furkan Ayhan [email protected]

Purpose of revert

Slack message (Internal) about possible incidents in customer pipelines because of this change.

We are reverting this and allowing to use job names for more than 255 chars.

Checklist

Milestone info

  • I am reverting something in the current milestone. No changelog is needed, and I've added a ~"regression:*" label.
  • I am reverting something in a different milestone. A changelog is needed, and I've removed the ~"regression:*" label.

#584573

tag:gitlab.com,2026-03-17:5211780844 Furkan Ayhan pushed to project branch 584405-optimize-cache-and-batch-component-fetching at GitLab.org / GitLab 2026-03-17T09:26:21Z furkanayhan Furkan Ayhan [email protected]

Furkan Ayhan (18e32374) at 17 Mar 09:26

Fix undercoverage

tag:gitlab.com,2026-03-17:5211777031 Furkan Ayhan commented on merge request !227483 at GitLab.org / GitLab 2026-03-17T09:25:34Z furkanayhan Furkan Ayhan [email protected]

from https://docs.gitlab.com/development/database/query_recorder/#recommended-pattern =>

warm-up: Handles one-time initialization queries that do not repeat on subsequent requests, such as schema loading.

tag:gitlab.com,2026-03-17:5211777002 Furkan Ayhan commented on merge request !227483 at GitLab.org / GitLab 2026-03-17T09:25:33Z furkanayhan Furkan Ayhan [email protected]

do you mean whether component_name is present or not? I haven't thought on it so much but this logic was already here before this MR and we did not see a problem with it :)

tag:gitlab.com,2026-03-16:5210202928 Furkan Ayhan commented on merge request !226844 at GitLab.org / GitLab 2026-03-16T21:54:07Z furkanayhan Furkan Ayhan [email protected]

@lauraXD Yes! That's because our goal here is to see there is a call to this method with string keys. If we see a single entry, we'll disable the FF and fix the call so that we'll not pass a hash with string keys.

tag:gitlab.com,2026-03-16:5209246461 Furkan Ayhan pushed to project branch 584405-optimize-cache-and-batch-component-fetching at GitLab.org / GitLab 2026-03-16T16:39:16Z furkanayhan Furkan Ayhan [email protected]

Furkan Ayhan (69a55785) at 16 Mar 16:39

Optimize CI component fetching with request-scoped caching and batc...

tag:gitlab.com,2026-03-16:5209216099 Furkan Ayhan commented on issue #593602 at GitLab.org / GitLab 2026-03-16T16:31:19Z furkanayhan Furkan Ayhan [email protected]

@skarbek Thank you, I understand the point.

My initial assumption was that we should always wait for the pipeline/job to finish before checking the output; that's the typical pattern we (or I) follow in most QA specs.

Are you suggesting that we should check the job trace without waiting for the job to complete? So instead of wait_until the pipeline finishes, we would do something like wait_until all expect(trace).to conditions are met?

tag:gitlab.com,2026-03-16:5209107239 Furkan Ayhan commented on merge request !206183 at GitLab.org / GitLab 2026-03-16T16:05:39Z furkanayhan Furkan Ayhan [email protected]

@xrow I'm glad to hear it!

Let's follow #592105 for the further updates then ✌️

tag:gitlab.com,2026-03-16:5209105412 Furkan Ayhan commented on merge request !225769 at GitLab.org / GitLab 2026-03-16T16:05:14Z furkanayhan Furkan Ayhan [email protected]

@mmichaux-ext this is the only one left ✌️

tag:gitlab.com,2026-03-16:5209097372 Furkan Ayhan commented on merge request !225769 at GitLab.org / GitLab 2026-03-16T16:03:38Z furkanayhan Furkan Ayhan [email protected]

thanks!

tag:gitlab.com,2026-03-16:5209097323 Furkan Ayhan commented on merge request !225769 at GitLab.org / GitLab 2026-03-16T16:03:38Z furkanayhan Furkan Ayhan [email protected]

yes, please

tag:gitlab.com,2026-03-16:5209072620 Furkan Ayhan commented on issue #593602 at GitLab.org / GitLab 2026-03-16T15:58:44Z furkanayhan Furkan Ayhan [email protected]

@manuelgrabowski I don't think we can do anything about it. As our customers suffer from the incidents, our tests do, too.

@treagitlab Maybe, we should not quarantine these kinds of tests. WDYT?