Forking with hashed repository paths failed
Summary
After enabling "Create new projects using hashed storage paths" in our installation (but without running a full migration), we can not fork projects anymore.
strace'ing the 'sidekiq' process shows, that 'gitlab-shell' tries to access the git repository with a legacy name.
Steps to reproduce
-
enable "Create new projects using hashed storage paths"
-
create a group
test-from
-
create a group
test-to
-
create a project
test
intest-from
and fill it with content (e.g. "create file") -
try to clone it into
test-to
What is the current bug behavior?
Error message
Unable to fork project 1682 for repository test-from/test -> test-to
Project is empty and can not be used.
Relevant logs and/or screenshots
strace -f -p <pidof-sidekiq>
32398 execve("/opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-projects", ["/opt/gitlab/embedded/service/git"..., "fork-project", "/srv/git-data/repositories", "test-from/test.git", "/srv/git-data/repositories", "test-to"], [/* 33 vars */] <unfinished ...>
...
32398 stat("/srv/git-data/repositories/test-to", 0x7fff31d197a0) = -1 ENOENT (No such file or directory)
...
32398 exit_group(1) = ?
gitlab-shell.log
E, [2017-11-30T19:05:14.131619 #32398] ERROR -- : fork-project failed: destination namespace </srv/git-data/repositories/test-to> does not exist.
Output of checks
Results of GitLab environment info
Expand for output related to GitLab environment info
System information System: Current User: git Using RVM: no Ruby Version: 2.3.5p376 Gem Version: 2.6.13 Bundler Version:1.13.7 Rake Version: 12.1.0 Redis Version: 3.2.5 Git Version: 2.13.6 Sidekiq Version:5.0.4 Go Version: unknown
GitLab information Version: 10.2.2 Revision: da70bc4 Directory: /opt/gitlab/embedded/service/gitlab-rails DB Adapter: postgresql URL: https://gitlab.intern.sigma-chemnitz.de HTTP Clone URL: https://gitlab.intern.sigma-chemnitz.de/some-group/some-project.git SSH Clone URL: git@gitlab.intern.sigma-chemnitz.de:some-group/some-project.git Using LDAP: no Using Omniauth: no
GitLab Shell Version: 5.9.4 Repository storage paths:
- default: /srv/git-data/repositories Hooks: /opt/gitlab/embedded/service/gitlab-shell/hooks Git: /opt/gitlab/embedded/bin/git
Results of GitLab application Check
Expand for output related to the GitLab application check
gitlab-rake gitlab:check SANITIZE=true | grep -v '[0-9]+/[0-9]+ ... (yes|ok)'
Checking GitLab Shell ...
GitLab Shell version >= 5.9.4 ? ... OK (5.9.4) Repo base directory exists? default... yes Repo storage directories are symlinks? default... no Repo paths owned by git:root, or git:git? default... yes Repo paths access is drwxrws---? default... yes hooks directories in repos are links: ... 5/8 ... repository is empty 51/154 ... repository is empty 52/159 ... repository is empty 57/189 ... repository is empty 61/197 ... repository is empty 17/257 ... repository is empty 73/270 ... repository is empty 74/271 ... repository is empty 78/282 ... repository is empty 79/283 ... repository is empty 49/284 ... repository is empty 83/299 ... repository is empty 84/300 ... repository is empty 88/301 ... repository is empty 89/302 ... repository is empty 91/306 ... repository is empty 93/312 ... repository is empty 96/324 ... repository is empty 97/328 ... repository is empty 99/335 ... repository is empty 100/336 ... repository is empty 103/351 ... repository is empty 107/362 ... repository is empty 108/366 ... repository is empty 69/384 ... repository is empty 114/387 ... repository is empty 115/388 ... repository is empty 116/389 ... repository is empty 117/390 ... repository is empty 118/392 ... repository is empty 119/393 ... repository is empty 120/394 ... repository is empty 121/395 ... repository is empty 123/398 ... repository is empty 126/399 ... repository is empty 125/400 ... repository is empty 127/401 ... repository is empty 130/408 ... repository is empty 57/1180 ... repository is empty 371/1680 ... repository is empty 373/1683 ... repository is empty Running /opt/gitlab/embedded/service/gitlab-shell/bin/check Check GitLab API access: OK Redis available via internal API: OK
Access to /var/local/lib/gitlab/user/.ssh/authorized_keys: OK gitlab-shell self-check successful
Checking GitLab Shell ... Finished
Checking Sidekiq ...
Running? ... yes Number of Sidekiq processes ... 1
Checking Sidekiq ... Finished
Reply by email is disabled in config/gitlab.yml Checking LDAP ...
LDAP is disabled in config/gitlab.yml
Checking LDAP ... Finished
Checking GitLab ...
Git configured correctly? ... yes Database config exists? ... yes All migrations up? ... yes Database contains orphaned GroupMembers? ... no GitLab config exists? ... yes GitLab config up to date? ... yes Log directory writable? ... yes Tmp directory writable? ... yes Uploads directory exists? ... yes Uploads directory has correct permissions? ... yes Uploads directory tmp has correct permissions? ... yes Init script exists? ... skipped (omnibus-gitlab has no init script) Init script up-to-date? ... skipped (omnibus-gitlab has no init script) Projects have namespace: ... Redis version >= 2.8.0? ... yes Ruby version >= 2.3.5 ? ... yes (2.3.5) Git version >= 2.7.3 ? ... yes (2.13.6) Git user has default SSH configuration? ... yes Active users: ... 30
Checking GitLab ... Finished