Run repository cleanup on failure
This commit is contained in:
parent
220208c051
commit
4908e4b3a2
2 changed files with 24 additions and 3 deletions
|
@ -106,6 +106,10 @@ module Gitlab
|
||||||
repository_service.delete_config([FULLPATH_CONFIG_KEY])
|
repository_service.delete_config([FULLPATH_CONFIG_KEY])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def cleanup_repository
|
||||||
|
repository_service.cleanup
|
||||||
|
end
|
||||||
|
|
||||||
def storage
|
def storage
|
||||||
@storage ||=
|
@storage ||=
|
||||||
if hashed_storage?
|
if hashed_storage?
|
||||||
|
@ -138,7 +142,10 @@ module Gitlab
|
||||||
def perform(project_id, retry_count)
|
def perform(project_id, retry_count)
|
||||||
project = Project.find(project_id)
|
project = Project.find(project_id)
|
||||||
|
|
||||||
migration_class.new.safe_perform_one(project, retry_count) if project
|
return unless project
|
||||||
|
|
||||||
|
project.cleanup_repository
|
||||||
|
migration_class.new.safe_perform_one(project, retry_count)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,12 @@ describe BackfillStoreProjectFullPathInRepo, :migration do
|
||||||
|
|
||||||
describe '#up' do
|
describe '#up' do
|
||||||
shared_examples_for 'writes the full path to git config' do
|
shared_examples_for 'writes the full path to git config' do
|
||||||
|
let(:repository_service) { spy(:repository_service) }
|
||||||
|
|
||||||
|
def stub_repository_service
|
||||||
|
allow(Gitlab::GitalyClient::RepositoryService).to receive(:new).and_return(repository_service)
|
||||||
|
end
|
||||||
|
|
||||||
it 'writes the git config' do
|
it 'writes the git config' do
|
||||||
expect_any_instance_of(Gitlab::GitalyClient::RepositoryService)
|
expect_any_instance_of(Gitlab::GitalyClient::RepositoryService)
|
||||||
.to receive(:set_config).with('gitlab.fullpath' => expected_path)
|
.to receive(:set_config).with('gitlab.fullpath' => expected_path)
|
||||||
|
@ -28,15 +34,23 @@ describe BackfillStoreProjectFullPathInRepo, :migration do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'retries in case of failure' do
|
it 'retries in case of failure' do
|
||||||
repository_service = spy(:repository_service)
|
stub_repository_service
|
||||||
|
|
||||||
allow(Gitlab::GitalyClient::RepositoryService).to receive(:new).and_return(repository_service)
|
|
||||||
allow(repository_service).to receive(:set_config).and_raise(GRPC::BadStatus, 'Retry me')
|
allow(repository_service).to receive(:set_config).and_raise(GRPC::BadStatus, 'Retry me')
|
||||||
expect(repository_service).to receive(:set_config).exactly(3).times
|
expect(repository_service).to receive(:set_config).exactly(3).times
|
||||||
|
|
||||||
migration.up
|
migration.up
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'cleans up repository in case of failure' do
|
||||||
|
stub_repository_service
|
||||||
|
|
||||||
|
allow(repository_service).to receive(:set_config).and_raise(GRPC::BadStatus, 'Retry me')
|
||||||
|
expect(repository_service).to receive(:cleanup)
|
||||||
|
|
||||||
|
migration.up
|
||||||
|
end
|
||||||
|
|
||||||
context 'legacy storage' do
|
context 'legacy storage' do
|
||||||
it 'finds the repository at the correct location' do
|
it 'finds the repository at the correct location' do
|
||||||
Project.find(project.id).create_repository
|
Project.find(project.id).create_repository
|
||||||
|
|
Loading…
Reference in a new issue