Module: CanMoveRepositoryStorage
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/can_move_repository_storage.rb
Constant Summary collapse
- RepositoryReadOnlyError =
Class.new(StandardError)
Instance Method Summary collapse
- #git_transfer_in_progress? ⇒ Boolean
- #reference_counter(type:) ⇒ Object
-
#set_repository_read_only!(skip_git_transfer_check: false) ⇒ Object
Tries to set repository as read_only, checking for existing Git transfers in progress beforehand.
-
#set_repository_writable! ⇒ Object
Set repository as writable again.
Instance Method Details
#git_transfer_in_progress? ⇒ Boolean
38 39 40 |
# File 'app/models/concerns/can_move_repository_storage.rb', line 38 def git_transfer_in_progress? reference_counter(type: repository.repo_type).value > 0 end |
#reference_counter(type:) ⇒ Object
42 43 44 |
# File 'app/models/concerns/can_move_repository_storage.rb', line 42 def reference_counter(type:) Gitlab::ReferenceCounter.new(type.identifier_for_container(self)) end |
#set_repository_read_only!(skip_git_transfer_check: false) ⇒ Object
Tries to set repository as read_only, checking for existing Git transfers in progress beforehand. Setting a repository read-only will fail if it is already in that state.
It is assumed that with_lock is used here to ensure that no race condition appears between reading and writing the read-only column.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'app/models/concerns/can_move_repository_storage.rb', line 16 def set_repository_read_only!(skip_git_transfer_check: false) with_lock do raise RepositoryReadOnlyError, _('Git transfer in progress') if !skip_git_transfer_check && git_transfer_in_progress? raise RepositoryReadOnlyError, _('Repository already read-only') if safe_read_repository_read_only_column raise ActiveRecord::RecordNotSaved, _('Database update failed') unless update_repository_read_only_column(true) nil end end |
#set_repository_writable! ⇒ Object
Set repository as writable again. Unlike setting it read-only, this will succeed if the repository is already writable.
33 34 35 36 |
# File 'app/models/concerns/can_move_repository_storage.rb', line 33 def set_repository_writable! raise ActiveRecord::RecordNotSaved, _('Database update failed') unless update_repository_read_only_column(false) end |