Refactor access to repository storage and weights

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

  • Close this issue

Problem

Currently, in order to access information for repository storage configuration (like name, path, gitaly_address) we use the settings Hash directly: Gitlab.config.repositories.storages (or Settings.repositories.storages).

To load stored repository storage weight we then use the settings Hash and and lookup the stored weights ApplicationSettings#repository_storages_weighted[<name>] in ApplicationsHelper#storage_weights.

Proposed Solution

Instead of using underlying implementation directly to lookup storage attributes and their weights we should it in a Object Repositories::Storage having methods like #name, #path, #gitaly_address, #weight etc. A collection of storages could be wrapped in Repositories::Storages instead.

Why?

In this case, the use of primitive data types (see PrimitveObsession) is not very convenient and can be error-prone leading to subtle bugs. See !75993 (comment 895124425)

Edited Sep 22, 2025 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading