Skip to content
GitLab
Next
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • gitaly gitaly
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 561
    • Issues 561
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
    • Requirements
  • Merge requests 56
    • Merge requests 56
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GitLab.orgGitLab.org
  • gitalygitaly
  • Issues
  • #1533
Closed
Open
Issue created Mar 07, 2019 by Jacob Vosmaer@jacobvosmaer-gitlabDeveloper

How does GitLab behave if a pool repository that should exist in Gitaly cannot be found?

This is one of the edge cases around Git object deduplication. We track pool repositories in the GitLab SQL database but it can happen that the SQL record for a pool got created but the repository did not get created on disk in Gitaly.

  1. How will GitLab behave in this scenario? Will the user notice? Can there be data loss?
  2. How will GitLab recover from this scenario?

A particular example of this is Geo, where we currently have this logic:

    def create_object_pool_on_secondary?
      return unless ::Gitlab::Geo.secondary?
      return unless project.object_pool_missing?
      return unless pool_repository.source_project_repository.exists?

      true
    end

I wonder if it would be better to initialize an empty pool if there is no source project, so that at least there is a pool. Otherwise we are stuck with this inconsistency between SQL ("there is a pool repository") and Gitaly ("no, there is no pool repository").

Edited Mar 08, 2019 by Jacob Vosmaer
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking