Commit c01c487c authored by Lin Jen-Shin's avatar Lin Jen-Shin

Merge branch 'zj-ensure-link-pool-repo-gc' into 'master'

Ensure pool participants are linked before GC

Closes gitaly#1354

See merge request !24230
parents da319587 e03602e0
Pipeline #43294030 passed with stages
in 36 minutes and 43 seconds
......@@ -2039,6 +2039,10 @@ class Project < ActiveRecord::Base
pool_repository&.unlink_repository(repository) && update_column(:pool_repository_id, nil)
end
def link_pool_repository
pool_repository&.link_repository(repository)
end
private
def merge_requests_allowing_collaboration(source_branch = nil)
......
......@@ -23,6 +23,7 @@ class GitGarbageCollectWorker
end
task = task.to_sym
project.link_pool_repository
gitaly_call(task, project.repository.raw_repository)
# Refresh the branch cache in case garbage collection caused a ref lookup to fail
......
......@@ -5,14 +5,13 @@ module ObjectPool
include ApplicationWorker
include ObjectPoolQueue
def perform(pool_id, project_id)
pool = PoolRepository.find_by_id(pool_id)
return unless pool&.joinable?
# The use of pool id is deprecated. Keeping the argument allows old jobs to
# still be performed.
def perform(_pool_id, project_id)
project = Project.find_by_id(project_id)
return unless project
return unless project&.pool_repository&.joinable?
pool.link_repository(project.repository)
project.link_pool_repository
Projects::HousekeepingService.new(project).execute
end
......
......@@ -71,6 +71,17 @@ describe GitGarbageCollectWorker do
subject.perform(project.id)
end
context 'when the repository has joined a pool' do
let!(:pool) { create(:pool_repository, :ready) }
let(:project) { pool.source_project }
it 'ensures the repositories are linked' do
expect_any_instance_of(PoolRepository).to receive(:link_repository).once
subject.perform(project.id)
end
end
end
context 'when no lease can be obtained' do
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment