diff options
author | Gabriel Mazetto <brodock@gmail.com> | 2019-02-22 09:12:06 +0100 |
---|---|---|
committer | Gabriel Mazetto <brodock@gmail.com> | 2019-03-01 15:49:20 +0100 |
commit | 4bae61005dd835c7c8bf3ce911328a8e8af86a93 (patch) | |
tree | 4cd1959d30a37fdae86554bead3032c23c284d4b | |
parent | fc0ff92807620c36d01f23eb0d7d88b02cb141c1 (diff) | |
download | gitlab-ce-4bae61005dd835c7c8bf3ce911328a8e8af86a93.tar.gz |
Edge case: upgrade/downgrade when repository doesn't exist
This change takes the case where repository doesn't exist on disk
and make it ignore but succeed the step, increasing or decreasing the
version depending on the operation.
3 files changed, 22 insertions, 1 deletions
diff --git a/app/services/projects/hashed_storage/base_repository_service.rb b/app/services/projects/hashed_storage/base_repository_service.rb index 761c81d776f..00a6af5238e 100644 --- a/app/services/projects/hashed_storage/base_repository_service.rb +++ b/app/services/projects/hashed_storage/base_repository_service.rb @@ -38,7 +38,8 @@ module Projects # project was not originally empty. if !from_exists && !to_exists logger.warn "Can't find a repository on either source or target paths for #{project.full_path} (ID=#{project.id}) ..." - return false + + return true elsif !from_exists # Repository have been moved already. return true diff --git a/spec/services/projects/hashed_storage/migrate_repository_service_spec.rb b/spec/services/projects/hashed_storage/migrate_repository_service_spec.rb index 0772dc4b85b..cd56337420b 100644 --- a/spec/services/projects/hashed_storage/migrate_repository_service_spec.rb +++ b/spec/services/projects/hashed_storage/migrate_repository_service_spec.rb @@ -32,6 +32,16 @@ describe Projects::HashedStorage::MigrateRepositoryService do end end + context 'when repository doesnt exist on disk' do + let(:project) { create(:project, :legacy_storage) } + + it 'skips the disk change but increase the version' do + service.execute + + expect(project.hashed_storage?(:repository)).to be_truthy + end + end + context 'when succeeds' do it 'renames project and wiki repositories' do service.execute diff --git a/spec/services/projects/hashed_storage/rollback_repository_service_spec.rb b/spec/services/projects/hashed_storage/rollback_repository_service_spec.rb index 7c3a243b3ca..daac220f710 100644 --- a/spec/services/projects/hashed_storage/rollback_repository_service_spec.rb +++ b/spec/services/projects/hashed_storage/rollback_repository_service_spec.rb @@ -34,6 +34,16 @@ describe Projects::HashedStorage::RollbackRepositoryService, :clean_gitlab_redis end end + context 'when repository doesnt exist on disk' do + let(:project) { create(:project) } + + it 'skips the disk change but decrease the version' do + service.execute + + expect(project.legacy_storage?).to be_truthy + end + end + context 'when succeeds' do it 'renames project and wiki repositories' do service.execute |