summaryrefslogtreecommitdiff
path: root/app/services/projects
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2019-07-25 16:15:00 -0700
committerStan Hu <stanhu@gmail.com>2019-07-29 23:05:03 -0700
commit9c2baada57a6a4c6746ce9fa37ec33d94e2dff09 (patch)
tree5afe8d3cac94d1895c9fe1583507f705e8e30392 /app/services/projects
parent4fcd69009bdf14491e2c1fd40f701a5ba3398d20 (diff)
downloadgitlab-ce-9c2baada57a6a4c6746ce9fa37ec33d94e2dff09.tar.gz
Ignore Gitaly errors if cache flushing fails on project destruction
We should just ignore these errors and move along with the deletion since the repositories are going to be trashed anyway. Closes https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/31164
Diffstat (limited to 'app/services/projects')
-rw-r--r--app/services/projects/destroy_service.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/app/services/projects/destroy_service.rb b/app/services/projects/destroy_service.rb
index b805a7f1211..a1279bfb3a3 100644
--- a/app/services/projects/destroy_service.rb
+++ b/app/services/projects/destroy_service.rb
@@ -210,11 +210,20 @@ module Projects
end
def flush_caches(project)
- project.repository.before_delete
+ ignore_git_errors(repo_path) { project.repository.before_delete }
- Repository.new(wiki_path, project, disk_path: repo_path).before_delete
+ ignore_git_errors(wiki_path) { Repository.new(wiki_path, project, disk_path: repo_path).before_delete }
Projects::ForksCountService.new(project).delete_cache
end
+
+ # If we get a Gitaly error, the repository may be corrupted. We can
+ # ignore these errors since we're going to trash the repositories
+ # anyway.
+ def ignore_git_errors(disk_path, &block)
+ yield
+ rescue Gitlab::Git::CommandError => e
+ Gitlab::GitLogger.warn(class: self.class.name, project_id: project.id, disk_path: disk_path, message: e.to_s)
+ end
end
end