diff options
author | James Lopez <james@jameslopez.es> | 2016-09-23 09:42:07 +0200 |
---|---|---|
committer | James Lopez <james@jameslopez.es> | 2016-09-29 16:58:14 +0200 |
commit | 29141ed3ea6157a60d9748921782015626a17f9e (patch) | |
tree | 7157204905f0184682528735a282cfa7c76f0dfd /app | |
parent | a8691bda3bb8b2db12f7aabe740a0e064c42fd62 (diff) | |
download | gitlab-ce-29141ed3ea6157a60d9748921782015626a17f9e.tar.gz |
fix broken repo 500 errors in UI and added relevant specs
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/projects_controller.rb | 7 | ||||
-rw-r--r-- | app/services/projects/import_service.rb | 5 |
2 files changed, 11 insertions, 1 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index eaa38fa6c98..c99aeadb5e4 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -324,7 +324,12 @@ class ProjectsController < Projects::ApplicationController end def repo_exists? - project.repository_exists? && !project.empty_repo? + project.repository_exists? && !project.empty_repo? && project.repo + + rescue Gitlab::Git::Repository::NoRepository + project.repository.expire_exists_cache + + false end def project_view_files? diff --git a/app/services/projects/import_service.rb b/app/services/projects/import_service.rb index cdad0426b02..e466ffa60eb 100644 --- a/app/services/projects/import_service.rb +++ b/app/services/projects/import_service.rb @@ -44,6 +44,11 @@ module Projects begin gitlab_shell.import_repository(project.repository_storage_path, project.path_with_namespace, project.import_url) rescue => e + # Expire cache to prevent scenarios such as: + # 1. First import failed, but the repo was imported successfully, so +exists?+ returns true + # 2. Retried import, repo is broken or not imported but +exists?+ still returns true + project.repository.before_import if project.repository_exists? + raise Error, "Error importing repository #{project.import_url} into #{project.path_with_namespace} - #{e.message}" end end |