diff options
author | Stan Hu <stanhu@gmail.com> | 2019-07-25 16:15:00 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2019-07-29 23:05:03 -0700 |
commit | 9c2baada57a6a4c6746ce9fa37ec33d94e2dff09 (patch) | |
tree | 5afe8d3cac94d1895c9fe1583507f705e8e30392 /app/services/projects | |
parent | 4fcd69009bdf14491e2c1fd40f701a5ba3398d20 (diff) | |
download | gitlab-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.rb | 13 |
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 |