Module: InitializerConnections

Defined in:
lib/initializer_connections.rb

Class Method Summary collapse

Class Method Details

.raise_database_connection_made_errorObject



27
28
29
30
31
# File 'lib/initializer_connections.rb', line 27

def self.raise_database_connection_made_error
  message = "Database connection should not be called during initializers. Read more at https://docs.gitlab.com/ee/development/rails_initializers.html#database-connections-in-initializers"

  raise message
end

.raise_if_new_database_connectionObject

Raises if new database connections established within the block

NOTE: this does not prevent existing connections that is already checked out from being used. You will need other means to prevent that such as by clearing all connections as implemented in the ‘:clear_active_connections_again` initializer for routes



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/initializer_connections.rb', line 11

def self.raise_if_new_database_connection
  return yield if Gitlab::Utils.to_boolean(ENV['SKIP_RAISE_ON_INITIALIZE_CONNECTIONS'])

  previous_connection_counts = ActiveRecord::Base.connection_handler.connection_pool_list.to_h do |pool|
    [pool.db_config.name, pool.connections.size]
  end

  yield

  new_connection_counts = ActiveRecord::Base.connection_handler.connection_pool_list.to_h do |pool|
    [pool.db_config.name, pool.connections.size]
  end

  raise_database_connection_made_error unless previous_connection_counts == new_connection_counts
end