diff options
author | Gabriel Mazetto <brodock@gmail.com> | 2018-12-22 06:01:24 +0300 |
---|---|---|
committer | Gabriel Mazetto <brodock@gmail.com> | 2019-01-08 01:53:06 +0300 |
commit | ee4af0c64cdf00d2c34ce7feb773e057f9758cff (patch) | |
tree | e020ae1eda2b9c2eb24a1e24c862d502c4f8e748 /spec/lib | |
parent | 7380364240a26d184d67edb1fe7ae0fc07217e0f (diff) |
Only set as `read_only` when starting the per-project migration
In the previous code, we locked the project during the migration
scheduling step, which works fine for small setups, but can be
problematic in really big installations.
We now moved the logic to inside the worker, so we minimize the time a
project will be read-only. We also make sure we only do that if
reference counter is `0` (no current operation is in progress).
Diffstat (limited to 'spec/lib')
-rw-r--r-- | spec/lib/gitlab/hashed_storage/migrator_spec.rb | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/spec/lib/gitlab/hashed_storage/migrator_spec.rb b/spec/lib/gitlab/hashed_storage/migrator_spec.rb index 7eac2cacb90..01d43ed00a2 100644 --- a/spec/lib/gitlab/hashed_storage/migrator_spec.rb +++ b/spec/lib/gitlab/hashed_storage/migrator_spec.rb @@ -19,15 +19,6 @@ describe Gitlab::HashedStorage::Migrator do end end - it 'sets projects as read only' do - allow(ProjectMigrateHashedStorageWorker).to receive(:perform_async).twice - subject.bulk_migrate(ids.min, ids.max) - - projects.each do |project| - expect(project.reload.repository_read_only?).to be_truthy - end - end - it 'rescues and log exceptions' do allow_any_instance_of(Project).to receive(:migrate_to_hashed_storage!).and_raise(StandardError) expect { subject.bulk_migrate(ids.min, ids.max) }.not_to raise_error @@ -40,6 +31,16 @@ describe Gitlab::HashedStorage::Migrator do subject.bulk_migrate(ids.min, ids.max) end + + it 'has migrated projects set as writable' do + perform_enqueued_jobs do + subject.bulk_migrate(ids.min, ids.max) + end + + projects.each do |project| + expect(project.reload.repository_read_only?).to be_falsey + end + end end describe '#migrate' do @@ -57,19 +58,20 @@ describe Gitlab::HashedStorage::Migrator do expect { subject.migrate(project) }.not_to raise_error end - it 'sets project as read only' do - allow(ProjectMigrateHashedStorageWorker).to receive(:perform_async) - subject.migrate(project) + it 'migrate project' do + perform_enqueued_jobs do + subject.migrate(project) + end - expect(project.reload.repository_read_only?).to be_truthy + expect(project.reload.hashed_storage?(:attachments)).to be_truthy end - it 'migrate project' do + it 'has migrated project set as writable' do perform_enqueued_jobs do subject.migrate(project) end - expect(project.reload.hashed_storage?(:attachments)).to be_truthy + expect(project.reload.repository_read_only?).to be_falsey end end end |