Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-08-05 21:08:56 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-08-05 21:08:56 +0300
commit092e41f5660a356a6cebc26cd0274b531d8c70c6 (patch)
treee696f9ad230bc5d5a7222fb690e3699a1a8abe78 /spec/tasks
parent8ec882085e734458ffe0fff8e2e4b72bc3871419 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/tasks')
-rw-r--r--spec/tasks/gitlab/db/lock_writes_rake_spec.rb72
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