Commit cf521c95 authored by Yorick Peterse's avatar Yorick Peterse

Allow setting of a custom connection pool host

This allows you to set a custom host when calling
Gitlab::Database.create_connection_pool. This is necessary for load
balancing as in this case we want to inherit all settings except for the
hostname.
parent 12ac140a
...@@ -79,11 +79,16 @@ module Gitlab ...@@ -79,11 +79,16 @@ module Gitlab
end end
end end
def self.create_connection_pool(pool_size) # pool_size - The size of the DB pool.
# host - An optional host name to use instead of the default one.
def self.create_connection_pool(pool_size, host = nil)
# See activerecord-4.2.7.1/lib/active_record/connection_adapters/connection_specification.rb # See activerecord-4.2.7.1/lib/active_record/connection_adapters/connection_specification.rb
env = Rails.env env = Rails.env
original_config = ActiveRecord::Base.configurations original_config = ActiveRecord::Base.configurations
env_config = original_config[env].merge('pool' => pool_size) env_config = original_config[env].merge('pool' => pool_size)
env_config['host'] = host if host
config = original_config.merge(env => env_config) config = original_config.merge(env => env_config)
spec = spec =
......
...@@ -119,9 +119,24 @@ describe Gitlab::Database, lib: true do ...@@ -119,9 +119,24 @@ describe Gitlab::Database, lib: true do
it 'creates a new connection pool with specific pool size' do it 'creates a new connection pool with specific pool size' do
pool = described_class.create_connection_pool(5) pool = described_class.create_connection_pool(5)
expect(pool) begin
.to be_kind_of(ActiveRecord::ConnectionAdapters::ConnectionPool) expect(pool)
expect(pool.spec.config[:pool]).to eq(5) .to be_kind_of(ActiveRecord::ConnectionAdapters::ConnectionPool)
expect(pool.spec.config[:pool]).to eq(5)
ensure
pool.disconnect!
end
end
it 'allows setting of a custom hostname' do
pool = described_class.create_connection_pool(5, '127.0.0.1')
begin
expect(pool.spec.config[:host]).to eq('127.0.0.1')
ensure
pool.disconnect!
end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment