Skip to content

GitLab Next

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
GitLab
GitLab
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 35,003
    • Issues 35,003
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
    • Iterations
  • Merge Requests 1,267
    • Merge Requests 1,267
  • Requirements
    • Requirements
    • List
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Security & Compliance
    • Security & Compliance
    • Dependency List
    • License Compliance
  • Operations
    • Operations
    • Metrics
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI / CD
    • Code Review
    • Insights
    • Issue
    • Repository
    • Value Stream
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • GitLab.org
  • GitLabGitLab
  • Issues
  • #31832

Closed
Open
Opened Sep 12, 2019 by Andrew Newdigate@andrewnDeveloper

Improved performance of the delete API for the Container Registry front end

Problem to solve

The GitLab Container Registry allows developers to build, push and share Docker images/tags using the Docker client and/or GitLab CI/CD.

For organizations that build many images across many projects, it is important to regularly remove old, unused images and tags. There are two required steps for deleting images from the registry. The first is to untag images, which can be done via the Container Registry UI or leveraging the Container Registry API. The second step is to run garbage collection and remove any blobs (can be layers or manifests)from storage.

The problem is that the API (Projects::Registry::TagsController#bulk_destroy) is currently the worst performing controller/action on GitLab.com. It has a p95 of 40s and some requests take up to 60s to complete. Projects::Registry::TagsController#destroy is not far behind.

Intended users

  • Delaney (Development Team Lead)
  • Sasha (Software Developer)
  • Devon (DevOps Engineer)
  • Sidney (Systems Administrator)

Further details

  • Examples of this request on GitLab.com: https://log.gitlab.net/goto/f29aea9c71acf7116fac0f84ac17ca95

User Interface Example

Screen_Shot_2020-01-15_at_7.40.57_PM

Background

  • The bulk delete API does currently run as a background job.
  • The API that powers the front end is not a background job.

Proposal

  • Improve the performance of the delete API that powers the frontend, so that we improve the performance and availability of the Container Registry user interface.
    • One option could be moving it to a background job.
    • Another could be improving the logic or optimizing the code (if possible)

Documentation

  • Container Registry API
Edited Jan 16, 2020 by Tim Rizzi
Assignee
Assign to
12.8
Milestone
12.8 (Past due)
Assign milestone
Time tracking
None
Due date
None
Reference: gitlab-org/gitlab#31832