Skip to content
Snippets Groups Projects
Commit 8b7932c2 authored by Robert Speicher's avatar Robert Speicher
Browse files

Merge branch 'disable-statement-timeout' into 'master'

Disable PostgreSQL statement timeout during migrations

Long-running migrations may take more than the timeout allowed by the database. Disable the session's statement timeout to ensure migrations don't get killed prematurely.

See merge request !5263
parents 7cb51ba5 3fd304c1
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -2,6 +2,7 @@ Please view this file on the master branch, on stable branches it's out of date.
 
v 8.10.0 (unreleased)
- Expose {should,force}_remove_source_branch (Ben Boeckel)
- Disable PostgreSQL statement timeout during migrations
- Fix projects dropdown loading performance with a simplified api cal. !5113 (tiagonbotelho)
- Fix commit builds API, return all builds for all pipelines for given commit. !4849
- Replace Haml with Hamlit to make view rendering faster. !3666
Loading
Loading
Loading
Loading
@@ -20,11 +20,19 @@ module Gitlab
 
if Database.postgresql?
options = options.merge({ algorithm: :concurrently })
disable_statement_timeout
end
 
add_index(table_name, column_name, options)
end
 
# Long-running migrations may take more than the timeout allowed by
# the database. Disable the session's statement timeout to ensure
# migrations don't get killed prematurely. (PostgreSQL only)
def disable_statement_timeout
ActiveRecord::Base.connection.execute('SET statement_timeout TO 0') if Database.postgresql?
end
# Updates the value of a column in batches.
#
# This method updates the table in batches of 5% of the total row count.
Loading
Loading
@@ -133,6 +141,8 @@ module Gitlab
'in the body of your migration class'
end
 
disable_statement_timeout
transaction do
add_column(table, column, type, default: nil)
 
Loading
Loading
Loading
Loading
@@ -13,6 +13,10 @@ describe Gitlab::Database::MigrationHelpers, lib: true do
context 'outside a transaction' do
before do
expect(model).to receive(:transaction_open?).and_return(false)
unless Gitlab::Database.postgresql?
allow_any_instance_of(Gitlab::Database::MigrationHelpers).to receive(:disable_statement_timeout)
end
end
 
context 'using PostgreSQL' do
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment