diff options
-rw-r--r-- | app/models/project.rb | 9 | ||||
-rw-r--r-- | app/services/projects/hashed_storage_migration_service.rb | 2 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 20 | ||||
-rw-r--r-- | spec/services/projects/hashed_storage_migration_service_spec.rb | 2 |
4 files changed, 14 insertions, 19 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index a43d1a7f484..cc35ebca6ad 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1614,7 +1614,10 @@ class Project < ActiveRecord::Base [nil, 0].include?(self.storage_version) end - def hashed_storage?(feature=:repository) + # Check if Hashed Storage is enabled for the project with at least informed feature rolled out + # + # @param [Symbol] feature that needs to be rolled out for the project (:repository, :attachments) + def hashed_storage?(feature) raise ArgumentError, "Invalid feature" unless HASHED_STORAGE_FEATURES.include?(feature) self.storage_version && self.storage_version >= HASHED_STORAGE_FEATURES[feature] @@ -1653,7 +1656,7 @@ class Project < ActiveRecord::Base end def migrate_to_hashed_storage! - return if hashed_storage? + return if hashed_storage?(:repository) update!(repository_read_only: true) @@ -1678,7 +1681,7 @@ class Project < ActiveRecord::Base def storage @storage ||= - if hashed_storage? + if hashed_storage?(:repository) Storage::HashedProject.new(self) else Storage::LegacyProject.new(self) diff --git a/app/services/projects/hashed_storage_migration_service.rb b/app/services/projects/hashed_storage_migration_service.rb index 41259de3a16..f5945f3b87f 100644 --- a/app/services/projects/hashed_storage_migration_service.rb +++ b/app/services/projects/hashed_storage_migration_service.rb @@ -10,7 +10,7 @@ module Projects end def execute - return if project.hashed_storage? + return if project.hashed_storage?(:repository) @old_disk_path = project.disk_path has_wiki = project.wiki.repository_exists? diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index fb5d0f9db9c..5eaff405c0e 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -2494,7 +2494,7 @@ describe Project do describe '#hashed_storage?' do it 'returns false' do - expect(project.hashed_storage?).to be_falsey + expect(project.hashed_storage?(:repository)).to be_falsey end end @@ -2630,22 +2630,14 @@ describe Project do end describe '#hashed_storage?' do - context 'without specifying feature' do - it 'returns true' do - expect(project.hashed_storage?).to be_truthy - end + it 'returns true if rolled out' do + expect(project.hashed_storage?(:attachments)).to be_truthy end - context 'specifying feature' do - it 'returns true if rolled out' do - expect(project.hashed_storage?(:attachments)).to be_truthy - end - - it 'returns false when not rolled out yet' do - project.storage_version = 1 + it 'returns false when not rolled out yet' do + project.storage_version = 1 - expect(project.hashed_storage?(:attachments)).to be_falsey - end + expect(project.hashed_storage?(:attachments)).to be_falsey end end diff --git a/spec/services/projects/hashed_storage_migration_service_spec.rb b/spec/services/projects/hashed_storage_migration_service_spec.rb index aa1988d29d6..b71b47c59b6 100644 --- a/spec/services/projects/hashed_storage_migration_service_spec.rb +++ b/spec/services/projects/hashed_storage_migration_service_spec.rb @@ -23,7 +23,7 @@ describe Projects::HashedStorageMigrationService do it 'updates project to be hashed and not read-only' do service.execute - expect(project.hashed_storage?).to be_truthy + expect(project.hashed_storage?(:repository)).to be_truthy expect(project.repository_read_only).to be_falsey end |