Commit a878cf13 authored by Alejandro Rodríguez's avatar Alejandro Rodríguez

Set a low IO priority for storage moves to lower performance impact

parent 894d8c16
v3.6.1
- Set a low IO priority for storage moves to lower performance impact
v3.6.0
- Added full support for `git-lfs-authenticate` to properly handle LFS requests and pass them on to Workhorse
......
......@@ -316,7 +316,17 @@ class GitlabProjects
if wait_for_pushes
$logger.info "Syncing project #{@project_name} from <#{full_path}> to <#{new_full_path}>."
system(*%W(rsync -a --delete #{source_path} #{new_full_path}))
# Set a low IO priority with ionice to not choke the server on moves
rsync_path = 'ionice -c2 -n7 rsync'
result = system(*%W(#{rsync_path} -a --delete --rsync-path="#{rsync_path}" #{source_path} #{new_full_path}))
unless result
# If the command fails with `ionice` (maybe because we're on a OS X
# development machine), try again without `ionice`.
rsync_path = 'rsync'
system(*%W(#{rsync_path} -a --delete --rsync-path="#{rsync_path}" #{source_path} #{new_full_path}))
end
else
$logger.error "mv-storage failed: source path <#{full_path}> is waiting for pushes to finish."
false
......
......@@ -212,6 +212,7 @@ describe GitlabProjects do
before do
FileUtils.mkdir_p(tmp_repo_path)
FileUtils.mkdir_p(File.join(tmp_repo_path, 'hooks')) # Add some contents to copy
FileUtils.mkdir_p(alternative_storage_path)
allow_any_instance_of(GitlabReferenceCounter).to receive(:value).and_return(0)
end
......@@ -222,6 +223,8 @@ describe GitlabProjects do
File.exists?(tmp_repo_path).should be_true
gl_projects.exec
File.exists?(new_repo_path).should be_true
# Make sure the target directory isn't empty (i.e. contents were copied)
FileUtils.cd(new_repo_path) { Dir['**/*'].length.should_not be(0) }
end
it "should fail if no destination path is provided" do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment