Skip to content

Commit e672ed8

Browse files
committed
Nullify pool_repository when a project leaves
Previously the nullification wasn't done, as the only caller would later destroy the model all together. In https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/9070 this change was made. This commit is basically a backport before that MR is merged.
1 parent a996e4e commit e672ed8

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

app/models/pool_repository.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,11 @@ def link_repository(repository)
8585
def unlink_repository(repository)
8686
object_pool.unlink_repository(repository.raw)
8787

88-
mark_obsolete unless member_projects.where.not(id: repository.project.id).exists?
88+
if member_projects.where.not(id: repository.project.id).exists?
89+
true
90+
else
91+
mark_obsolete
92+
end
8993
end
9094

9195
def object_pool

app/models/project.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2040,7 +2040,7 @@ def git_objects_poolable?
20402040
end
20412041

20422042
def leave_pool_repository
2043-
pool_repository&.unlink_repository(repository)
2043+
pool_repository&.unlink_repository(repository) && update_column(:pool_repository_id, nil)
20442044
end
20452045

20462046
private

spec/models/project_spec.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4387,6 +4387,17 @@ def domain_variable
43874387
end
43884388
end
43894389

4390+
describe '#leave_pool_repository' do
4391+
let(:pool) { create(:pool_repository) }
4392+
let(:project) { create(:project, :repository, pool_repository: pool) }
4393+
4394+
it 'removes the membership' do
4395+
project.leave_pool_repository
4396+
4397+
expect(pool.member_projects.reload).not_to include(project)
4398+
end
4399+
end
4400+
43904401
def rugged_config
43914402
rugged_repo(project.repository).config
43924403
end

0 commit comments

Comments
 (0)