Skip to content
Snippets Groups Projects
Commit 47723a68 authored by Alejandro Rodríguez's avatar Alejandro Rodríguez
Browse files

Fix rsync with ionice command building

parent ca7c80ce
No related branches found
No related tags found
1 merge request!97Fix rsync with ionice command building
Pipeline #
v3.6.4
- Fix rsync with ionice command building
- Fix short circuit logic between rsync with and without ionice for storage migrations
 
v3.6.3
Loading
Loading
Loading
Loading
@@ -318,16 +318,12 @@ class GitlabProjects
$logger.info "Syncing project #{@project_name} from <#{full_path}> to <#{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}))
if result
if rsync(source_path, new_full_path, 'ionice -c2 -n7 rsync')
true
else
# 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}))
rsync(source_path, new_full_path)
end
else
$logger.error "mv-storage failed: source path <#{full_path}> is waiting for pushes to finish."
Loading
Loading
@@ -393,4 +389,9 @@ class GitlabProjects
def gitlab_reference_counter
@gitlab_reference_counter ||= GitlabReferenceCounter.new(full_path)
end
def rsync(src, dest, rsync_path = 'rsync')
command = rsync_path.split + %W(-a --delete --rsync-path="#{rsync_path}" #{src} #{dest})
system(*command)
end
end
Loading
Loading
@@ -229,7 +229,7 @@ describe GitlabProjects do
 
it "should attempt rsync with ionice first" do
expect(gl_projects).to receive(:system).with(
'ionice -c2 -n7 rsync', '-a', '--delete', '--rsync-path="ionice -c2 -n7 rsync"',
'ionice', '-c2', '-n7', 'rsync', '-a', '--delete', '--rsync-path="ionice -c2 -n7 rsync"',
"#{tmp_repo_path}/", new_repo_path
).and_return(true)
 
Loading
Loading
@@ -238,7 +238,7 @@ describe GitlabProjects do
 
it "should attempt rsync without ionice if with ionice fails" do
expect(gl_projects).to receive(:system).with(
'ionice -c2 -n7 rsync', '-a', '--delete', '--rsync-path="ionice -c2 -n7 rsync"',
'ionice', '-c2', '-n7', 'rsync', '-a', '--delete', '--rsync-path="ionice -c2 -n7 rsync"',
"#{tmp_repo_path}/", new_repo_path
).and_return(false)
 
Loading
Loading
@@ -251,7 +251,7 @@ describe GitlabProjects do
 
it "should fail if both rsync attempts fail" do
expect(gl_projects).to receive(:system).with(
'ionice -c2 -n7 rsync', '-a', '--delete', '--rsync-path="ionice -c2 -n7 rsync"',
'ionice', '-c2', '-n7', 'rsync', '-a', '--delete', '--rsync-path="ionice -c2 -n7 rsync"',
"#{tmp_repo_path}/", new_repo_path
).and_return(false)
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment