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
  • #2589
Closed
Open
Issue created Mar 27, 2020 by James Ramsay (ex-GitLab)@jramsay-gitlab🔴Contributor

Git repository history missing when using NFS on a high-traffic monorepo

Problem to solve

There have been reports from isolated customers that when running a high-traffic monorepo on NFS, the repository will report and old value of HEAD on master, causing rebases and other operations to create data loss.

Further details

A working theory is that Git succeeds to write a change, but NFS somehow fails to persist the change. When creating the next merge commit to master, this is done from a stale HEAD, causing previously merged work to be lost.

This sounds possibly similar to https://about.gitlab.com/blog/2018/11/14/how-we-spent-two-weeks-hunting-an-nfs-bug/

After testing we discovered that there are multiple caching features of NFS that can be disabled to prevent inconsistencies.

Proposal

Document NFS caching features that can result in inconsistencies in Git repository state under high write volumes, when using multiple hot Gitaly nodes.

lookupcache=pos,actimeo=0,noac can be used to prevent this, but it increases IOPS significantly and reduces performance.

We can link to the Gitaly Cluster docs and remind users that NFS has been deprecated for Git storage in 13.0

Links/references

https://about.gitlab.com/blog/2018/11/14/how-we-spent-two-weeks-hunting-an-nfs-bug/

Edited May 28, 2020 by James Ramsay (ex-GitLab)
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking