Commit 078fab66 authored by Stan Hu's avatar Stan Hu

Merge branch '53972-fix-fill-shards' into 'master'

Fix a race condition in the shard population logic

Closes #53972

See merge request gitlab-org/gitlab-ce!23028
parents c718c6ee 3d1690c7
...@@ -9,14 +9,13 @@ class Shard < ActiveRecord::Base ...@@ -9,14 +9,13 @@ class Shard < ActiveRecord::Base
# The GitLab config does not change for the lifecycle of the process # The GitLab config does not change for the lifecycle of the process
in_config = Gitlab.config.repositories.storages.keys.map(&:to_s) in_config = Gitlab.config.repositories.storages.keys.map(&:to_s)
transaction do
in_db = all.pluck(:name) in_db = all.pluck(:name)
missing = in_config - in_db
# This may race with other processes creating shards at the same time, but
# `by_name` will handle that correctly
missing = in_config - in_db
missing.map { |name| by_name(name) } missing.map { |name| by_name(name) }
end end
end
def self.by_name(name) def self.by_name(name)
find_or_create_by(name: name) find_or_create_by(name: name)
......
---
title: Fix a race condition intermittently breaking GitLab startup
merge_request: 23028
author:
type: fixed
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