diff options
Diffstat (limited to 'spec/tasks/gitlab/db/lock_writes_rake_spec.rb')
-rw-r--r-- | spec/tasks/gitlab/db/lock_writes_rake_spec.rb | 72 |
1 files changed, 2 insertions, 70 deletions
diff --git a/spec/tasks/gitlab/db/lock_writes_rake_spec.rb b/spec/tasks/gitlab/db/lock_writes_rake_spec.rb index 3eb6d35f3f9..d03e15224cb 100644 --- a/spec/tasks/gitlab/db/lock_writes_rake_spec.rb +++ b/spec/tasks/gitlab/db/lock_writes_rake_spec.rb @@ -49,26 +49,6 @@ RSpec.describe 'gitlab:db:lock_writes', :silence_stdout, :reestablished_active_r end context 'when locking writes' do - it 'adds 3 triggers to the ci schema tables on the main database' do - expect do - run_rake_task('gitlab:db:lock_writes') - end.to change { - number_of_triggers_on(main_connection, Ci::Build.table_name) - }.by(3) # Triggers to block INSERT / UPDATE / DELETE - # Triggers on TRUNCATE are not added to the information_schema.triggers - # See https://www.postgresql.org/message-id/16934.1568989957%40sss.pgh.pa.us - end - - it 'adds 3 triggers to the main schema tables on the ci database' do - expect do - run_rake_task('gitlab:db:lock_writes') - end.to change { - number_of_triggers_on(ci_connection, Project.table_name) - }.by(3) # Triggers to block INSERT / UPDATE / DELETE - # Triggers on TRUNCATE are not added to the information_schema.triggers - # See https://www.postgresql.org/message-id/16934.1568989957%40sss.pgh.pa.us - end - it 'still allows writes on the tables with the correct connections' do Project.update_all(updated_at: Time.now) Ci::Build.update_all(updated_at: Time.now) @@ -107,31 +87,6 @@ RSpec.describe 'gitlab:db:lock_writes', :silence_stdout, :reestablished_active_r main_connection.execute("truncate ci_build_needs") end.to raise_error(ActiveRecord::StatementInvalid, /Table: "ci_build_needs" is write protected/) end - - it 'retries again if it receives a statement_timeout a few number of times' do - error_message = "PG::QueryCanceled: ERROR: canceling statement due to statement timeout" - call_count = 0 - allow(main_connection).to receive(:execute) do |statement| - if statement.include?("CREATE TRIGGER") - call_count += 1 - raise(ActiveRecord::QueryCanceled, error_message) if call_count.even? - end - end - run_rake_task('gitlab:db:lock_writes') - end - - it 'raises the exception if it happened many times' do - error_message = "PG::QueryCanceled: ERROR: canceling statement due to statement timeout" - allow(main_connection).to receive(:execute) do |statement| - if statement.include?("CREATE TRIGGER") - raise(ActiveRecord::QueryCanceled, error_message) - end - end - - expect do - run_rake_task('gitlab:db:lock_writes') - end.to raise_error(ActiveRecord::QueryCanceled) - end end context 'multiple shared databases' do @@ -156,26 +111,8 @@ RSpec.describe 'gitlab:db:lock_writes', :silence_stdout, :reestablished_active_r run_rake_task('gitlab:db:lock_writes') end - it 'removes the write protection triggers from the gitlab_main tables on the ci database' do - expect do - run_rake_task('gitlab:db:unlock_writes') - end.to change { - number_of_triggers_on(ci_connection, Project.table_name) - }.by(-3) # Triggers to block INSERT / UPDATE / DELETE - # Triggers on TRUNCATE are not added to the information_schema.triggers - # See https://www.postgresql.org/message-id/16934.1568989957%40sss.pgh.pa.us - - expect do - ci_connection.execute("delete from projects") - end.not_to raise_error - end - - it 'removes the write protection triggers from the gitlab_ci tables on the main database' do - expect do - run_rake_task('gitlab:db:unlock_writes') - end.to change { - number_of_triggers_on(main_connection, Ci::Build.table_name) - }.by(-3) + it 'allows writes again on the gitlab_ci tables on the main database' do + run_rake_task('gitlab:db:unlock_writes') expect do main_connection.execute("delete from ci_builds") @@ -187,9 +124,4 @@ RSpec.describe 'gitlab:db:lock_writes', :silence_stdout, :reestablished_active_r def number_of_triggers(connection) connection.select_value("SELECT count(*) FROM information_schema.triggers") end - - def number_of_triggers_on(connection, table_name) - connection - .select_value("SELECT count(*) FROM information_schema.triggers WHERE event_object_table=$1", nil, [table_name]) - end end |