Extract and simplify more code into BaseRepositoryService`
`try_to_set_repository_read_only!` is now on the Base class. Simplified Exception classes from 2 to 1 with a more descriptive name.
This commit is contained in:
parent
7c8920c9dc
commit
264394f6d3
5 changed files with 14 additions and 31 deletions
|
@ -2,11 +2,8 @@
|
|||
|
||||
module Projects
|
||||
module HashedStorage
|
||||
# Returned when there is an error with the Hashed Storage migration
|
||||
RepositoryMigrationError = Class.new(StandardError)
|
||||
|
||||
# Returned when there is an error with the Hashed Storage rollback
|
||||
RepositoryRollbackError = Class.new(StandardError)
|
||||
# Returned when repository can't be made read-only because there is already a git transfer in progress
|
||||
RepositoryInUseError = Class.new(StandardError)
|
||||
|
||||
class BaseRepositoryService < BaseService
|
||||
include Gitlab::ShellAdapter
|
||||
|
@ -55,6 +52,16 @@ module Projects
|
|||
move_repository(new_disk_path, old_disk_path)
|
||||
move_repository("#{new_disk_path}.wiki", old_wiki_disk_path)
|
||||
end
|
||||
|
||||
def try_to_set_repository_read_only!
|
||||
# Mitigate any push operation to start during migration
|
||||
unless project.set_repository_read_only!
|
||||
migration_error = "Target repository '#{old_disk_path}' cannot be made read-only as there is a git transfer in progress"
|
||||
logger.error migration_error
|
||||
|
||||
raise RepositoryInUseError, migration_error
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -35,18 +35,6 @@ module Projects
|
|||
|
||||
result
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def try_to_set_repository_read_only!
|
||||
# Mitigate any push operation to start during migration
|
||||
unless project.set_repository_read_only!
|
||||
migration_error = "Target repository '#{old_disk_path}' cannot be made read-only as there is a git transfer in progress"
|
||||
logger.error migration_error
|
||||
|
||||
raise RepositoryMigrationError, migration_error
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -35,18 +35,6 @@ module Projects
|
|||
|
||||
result
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def try_to_set_repository_read_only!
|
||||
# Mitigate any push operation to start during migration
|
||||
unless project.set_repository_read_only!
|
||||
migration_error = "Target repository '#{old_disk_path}' cannot be made read-only as there is a git transfer in progress"
|
||||
logger.error migration_error
|
||||
|
||||
raise RepositoryRollbackError, migration_error
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -28,7 +28,7 @@ describe Projects::HashedStorage::MigrateRepositoryService do
|
|||
it 'fails when a git operation is in progress' do
|
||||
allow(project).to receive(:repo_reference_count) { 1 }
|
||||
|
||||
expect { service.execute }.to raise_error(Projects::HashedStorage::RepositoryMigrationError)
|
||||
expect { service.execute }.to raise_error(Projects::HashedStorage::RepositoryInUseError)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ describe Projects::HashedStorage::RollbackRepositoryService, :clean_gitlab_redis
|
|||
it 'fails when a git operation is in progress' do
|
||||
allow(project).to receive(:repo_reference_count) { 1 }
|
||||
|
||||
expect { service.execute }.to raise_error(Projects::HashedStorage::RepositoryRollbackError)
|
||||
expect { service.execute }.to raise_error(Projects::HashedStorage::RepositoryInUseError)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue