diff options
Diffstat (limited to 'app/models/concerns/repository_storage_movable.rb')
-rw-r--r-- | app/models/concerns/repository_storage_movable.rb | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/app/models/concerns/repository_storage_movable.rb b/app/models/concerns/repository_storage_movable.rb index a45b4626628..8607f0d94f4 100644 --- a/app/models/concerns/repository_storage_movable.rb +++ b/app/models/concerns/repository_storage_movable.rb @@ -20,7 +20,7 @@ module RepositoryStorageMovable validate :container_repository_writable, on: :create default_value_for(:destination_storage_name, allows_nil: false) do - pick_repository_storage + Repository.pick_storage_shard end state_machine initial: :initial do @@ -68,6 +68,18 @@ module RepositoryStorageMovable storage_move.update_repository_storage(storage_move.destination_storage_name) end + after_transition started: :replicated do |storage_move| + # We have several scripts in place that replicate some statistics information + # to other databases. Some of them depend on the updated_at column + # to identify the models they need to extract. + # + # If we don't update the `updated_at` of the container after a repository storage move, + # the scripts won't know that they need to sync them. + # + # See https://gitlab.com/gitlab-data/analytics/-/issues/7868 + storage_move.container.touch + end + before_transition started: :failed do |storage_move| storage_move.container.set_repository_writable! end @@ -82,16 +94,6 @@ module RepositoryStorageMovable end end - class_methods do - private - - def pick_repository_storage - container_klass = reflect_on_association(:container).class_name.constantize - - container_klass.pick_repository_storage - end - end - # Projects, snippets, and group wikis has different db structure. In projects, # we need to update some columns in this step, but we don't with the other resources. # |