summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Vosmaer <jacob@gitlab.com>2018-08-28 18:42:22 +0200
committerJacob Vosmaer <jacob@gitlab.com>2018-08-28 18:42:22 +0200
commit633a7d87a4643b41efe60fc348582f8f98c12345 (patch)
treec87f6a008e058637d23f51dfd80934c92fb836d9
parentb64ba567ff4409a9e10f764297ea110023d4aec8 (diff)
downloadgitlab-ce-ignore-custom-hooks-error.tar.gz
WIP ignore custom hooks restore errorignore-custom-hooks-error
-rw-r--r--lib/backup/repository.rb3
-rw-r--r--spec/lib/backup/repository_spec.rb27
-rw-r--r--spec/tasks/gitlab/backup_rake_spec.rb14
3 files changed, 44 insertions, 0 deletions
diff --git a/lib/backup/repository.rb b/lib/backup/repository.rb
index 906ed498026..068b6e3e072 100644
--- a/lib/backup/repository.rb
+++ b/lib/backup/repository.rb
@@ -69,6 +69,8 @@ module Backup
custom_hooks_path = custom_hooks_tar(project)
Gitlab::GitalyClient::RepositoryService.new(project.repository)
.restore_custom_hooks(custom_hooks_path)
+# rescue => e
+# progress_warn(project, e, 'Failed to restore custom hooks')
end
def restore
@@ -84,6 +86,7 @@ module Backup
if File.exist?(path_to_project_bundle)
begin
project.repository.create_from_bundle(path_to_project_bundle)
+puts 'created from bundle'
restore_custom_hooks(project)
restore_repo_success = true
rescue => e
diff --git a/spec/lib/backup/repository_spec.rb b/spec/lib/backup/repository_spec.rb
index c5a854b5660..a28005d6c5e 100644
--- a/spec/lib/backup/repository_spec.rb
+++ b/spec/lib/backup/repository_spec.rb
@@ -71,6 +71,33 @@ describe Backup::Repository do
end
end
end
+
+ context 'restore custom hooks' do
+ let(:project) { create(:project, :repository) }
+let(:bundle_path) do
+ tmp = Tempfile.new(%w[restore .bundle])
+ path = tmp.path
+ tmp.close
+ project.repository.bundle_to_disk(path)
+ path
+end
+
+after do
+ FileUtils.rm_f(bundle_path)
+end
+
+ before do
+allow(subject).to receive(:path_to_bundle).and_return(bundle_path)
+ allow_any_instance_of(Gitlab::GitalyClient::RepositoryService).to receive(:restore_custom_hooks).and_raise('restore custom hooks failed')
+ end
+
+ it 'shows the appropriate error' do
+ subject.restore
+
+ progress.rewind
+ expect(progress.read).to include('Failed to restore custom hooks')
+ end
+ end
end
describe '#prepare_directories', :seed_helper do
diff --git a/spec/tasks/gitlab/backup_rake_spec.rb b/spec/tasks/gitlab/backup_rake_spec.rb
index 3ba6caf1337..3ddd3f9a91e 100644
--- a/spec/tasks/gitlab/backup_rake_spec.rb
+++ b/spec/tasks/gitlab/backup_rake_spec.rb
@@ -150,6 +150,20 @@ describe 'gitlab:app namespace rake task' do
end
expect(Dir.entries(File.join(repo_path, 'custom_hooks'))).to include("dummy.txt")
end
+
+context 'when custom_hooks.tar is invalid (gitlab-ce#50667)' do
+ it 'ignores the error' do
+ expect { run_rake_task('gitlab:backup:create') }.to output.to_stdout
+allow_any_instance_of(Gitlab::GitalyClient::RepositoryService).to receive(:restore_custom_hooks).and_raise('restore custom hooks failed')
+ #expect {
+ run_rake_task('gitlab:backup:restore') #}.to output.to_stdout
+
+ repo_path = Gitlab::GitalyClient::StorageSettings.allow_disk_access do
+ project.repository.path
+ end
+ expect(File.exist?(File.join(repo_path, 'custom_hooks'))).to be_false
+ end
+end
end
context 'specific backup tasks' do