Project Repository Storage Moves contribute
This document was created to help contributors understand the code design of project repository storage moves. Read this document before making changes to the code for this feature.
This document is intentionally limited to an overview of how the code is designed, as code can change often. To understand how a specific part of the feature works, view the code and the specs. The details here explain how the major components of the Code Owners feature work.
This document should be updated when parts of the codebase referenced in this document are updated, removed, or new parts are added.
Business logic
Projects::RepositoryStorageMove
: Tracks the move, includes state machine.- Defined in
app/models/projects/repository_storage_move.rb
.
- Defined in
RepositoryStorageMovable
: Contains the state machine logic, validators, and some helper methods.- Defined in
app/models/concerns/repository_storage_movable.rb
.
- Defined in
Project
: The project model.- Defined in
app/models/project.rb
.
- Defined in
CanMoveRepositoryStorage
: Contains helper methods that are intoProject
.- Defined in
app/models/concerns/can_move_repository_storage.rb
.
- Defined in
API::ProjectRepositoryStorageMoves
: API class for project repository storage moves.- Defined in
lib/api/project_repository_storage_moves.rb
.
- Defined in
Entities::Projects::RepositoryStorageMove
: API entity for serializing theProjects::RepositoryStorageMove
model.- Defined in
lib/api/entities/projects/repository_storage_moves.rb
.
- Defined in
Projects::ScheduleBulkRepositoryShardMovesService
: Service to schedule bulk moves.- Defined in
app/services/projects/schedule_bulk_repository_shard_moves_service.rb
.
- Defined in
ScheduleBulkRepositoryShardMovesMethods
: Generic methods for bulk moves.- Defined in
app/services/concerns/schedule_bulk_repository_shard_moves_methods.rb
.
- Defined in
Projects::ScheduleBulkRepositoryShardMovesWorker
: Worker to handle bulk moves.- Defined in
app/workers/projects/schedule_bulk_repository_shard_moves_worker.rb
.
- Defined in
Projects::UpdateRepositoryStorageWorker
: Finds repository storage move and then calls the update storage service.- Defined in
app/workers/projects/update_repository_storage_worker.rb
.
- Defined in
UpdateRepositoryStorageWorker
: Module containing generic logic forProjects::UpdateRepositoryStorageWorker
.- Defined in
app/workers/concerns/update_repository_storage_worker.rb
.
- Defined in
Projects::UpdateRepositoryStorageService
: Performs the move.- Defined in
app/services/projects/update_repository_storage_service.rb
.
- Defined in
UpdateRepositoryStorageMethods
: Module with generic methods included inProjects::UpdateRepositoryStorageService
.- Defined in
app/services/concerns/update_repository_storage_methods.rb
.
- Defined in
Projects::UpdateService
: Schedules move if the passed parameters request a move.- Defined in
app/services/projects/update_service.rb
.
- Defined in
PoolRepository
: Ruby object representing GitalyObjectPool
.- Defined in
app/models/pool_repository.rb
.
- Defined in
ObjectPool::CreateWorker
: Worker to create anObjectPool
withGitaly
.- Defined in
app/workers/object_pool/create_worker.rb
.
- Defined in
ObjectPool::JoinWorker
: Worker to join anObjectPool
withGitaly
.- Defined in
app/workers/object_pool/join_worker.rb
.
- Defined in
ObjectPool::ScheduleJoinWorker
: Worker to schedule anObjectPool::JoinWorker
.- Defined in
app/workers/object_pool/schedule_join_worker.rb
.
- Defined in
ObjectPool::DestroyWorker
: Worker to destroy anObjectPool
withGitaly
.- Defined in
app/workers/object_pool/destroy_worker.rb
.
- Defined in
ObjectPoolQueue
: Module to configureObjectPool
workers.- Defined in
app/workers/concerns/object_pool_queue.rb
.
- Defined in
Repositories::ReplicateService
: Handles replication of data from one repository to another.- Defined in
app/services/repositories/replicate_service.rb
.
- Defined in
Flow
These flowcharts should help explain the flow from the endpoints down to the models for different features.
Schedule a repository storage move with the API
Moving the storage after being scheduled
Docs
Edit this page to fix an error or add an improvement in a merge request.
Create an issue to suggest an improvement to this page.
Product
Create an issue if there's something you don't like about this feature.
Propose functionality by submitting a feature request.
Feature availability and product trials
View pricing to see all GitLab tiers and features, or to upgrade.
Try GitLab for free with access to all features for 30 days.
Get help
If you didn't find what you were looking for, search the docs.
If you want help with something specific and could use community support, post on the GitLab forum.
For problems setting up or using this feature (depending on your GitLab subscription).
Request support