Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2019-01-14 19:04:21 +0300
committerLin Jen-Shin <godfat@godfat.org>2019-01-14 19:04:21 +0300
commitc01c487cf0a32fb9c3c4122e714de9d397caafbc (patch)
treea22f0d26e064b9aef6b38070f9bdfaad770b59a2
parentda319587aaffd2ee228e4691f328c383cd2e28bd (diff)
parente03602e09de5d72b3bc5aee0df2a42807456a391 (diff)
Merge branch 'zj-ensure-link-pool-repo-gc' into 'master'
Ensure pool participants are linked before GC Closes gitaly#1354 See merge request gitlab-org/gitlab-ce!24230
-rw-r--r--app/models/project.rb4
-rw-r--r--app/workers/git_garbage_collect_worker.rb1
-rw-r--r--app/workers/object_pool/join_worker.rb11
-rw-r--r--spec/workers/git_garbage_collect_worker_spec.rb11
4 files changed, 21 insertions, 6 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index 7ab2fc30c24..27be16720b5 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -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)
diff --git a/app/workers/git_garbage_collect_worker.rb b/app/workers/git_garbage_collect_worker.rb
index d3628b23189..b33e9b1f718 100644
--- a/app/workers/git_garbage_collect_worker.rb
+++ b/app/workers/git_garbage_collect_worker.rb
@@ -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
diff --git a/app/workers/object_pool/join_worker.rb b/app/workers/object_pool/join_worker.rb
index 07676011b2a..9c5161fd55a 100644
--- a/app/workers/object_pool/join_worker.rb
+++ b/app/workers/object_pool/join_worker.rb
@@ -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
diff --git a/spec/workers/git_garbage_collect_worker_spec.rb b/spec/workers/git_garbage_collect_worker_spec.rb
index a159f24f876..4895a968d6e 100644
--- a/spec/workers/git_garbage_collect_worker_spec.rb
+++ b/spec/workers/git_garbage_collect_worker_spec.rb
@@ -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