CE port: allow SRV records in DB service discovery
This commit is contained in:
parent
e12f7fe062
commit
08fcb2379e
|
@ -122,6 +122,7 @@ production:
|
|||
discover:
|
||||
nameserver: localhost
|
||||
record: secondary.postgresql.service.consul
|
||||
record_type: A
|
||||
port: 8600
|
||||
interval: 60
|
||||
disconnect_timeout: 120
|
||||
|
@ -137,12 +138,16 @@ The following options can be set:
|
|||
| Option | Description | Default |
|
||||
|----------------------|---------------------------------------------------------------------------------------------------|-----------|
|
||||
| `nameserver` | The nameserver to use for looking up the DNS record. | localhost |
|
||||
| `record` | The A record to look up. This option is required for service discovery to work. | |
|
||||
| `record` | The record to look up. This option is required for service discovery to work. | |
|
||||
| `record_type` | Optional record type to look up, this can be either A or SRV (since GitLab 12.3) | A |
|
||||
| `port` | The port of the nameserver. | 8600 |
|
||||
| `interval` | The minimum time in seconds between checking the DNS record. | 60 |
|
||||
| `disconnect_timeout` | The time in seconds after which an old connection is closed, after the list of hosts was updated. | 120 |
|
||||
| `use_tcp` | Lookup DNS resources using TCP instead of UDP | false |
|
||||
|
||||
If `record_type` is set to `SRV`, GitLab will continue to use a round-robin algorithm
|
||||
and will ignore the `weight` and `priority` in the record.
|
||||
|
||||
The `interval` value specifies the _minimum_ time between checks. If the A
|
||||
record has a TTL greater than this value, then service discovery will honor said
|
||||
TTL. For example, if the TTL of the A record is 90 seconds, then service
|
||||
|
|
|
@ -195,13 +195,14 @@ module Gitlab
|
|||
|
||||
# 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)
|
||||
def self.create_connection_pool(pool_size, host = nil, port = nil)
|
||||
# See activerecord-4.2.7.1/lib/active_record/connection_adapters/connection_specification.rb
|
||||
env = Rails.env
|
||||
original_config = ActiveRecord::Base.configurations
|
||||
|
||||
env_config = original_config[env].merge('pool' => pool_size)
|
||||
env_config['host'] = host if host
|
||||
env_config['port'] = port if port
|
||||
|
||||
config = original_config.merge(env => env_config)
|
||||
|
||||
|
|
|
@ -347,6 +347,17 @@ describe Gitlab::Database do
|
|||
pool.disconnect!
|
||||
end
|
||||
end
|
||||
|
||||
it 'allows setting of a custom hostname and port' do
|
||||
pool = described_class.create_connection_pool(5, '127.0.0.1', 5432)
|
||||
|
||||
begin
|
||||
expect(pool.spec.config[:host]).to eq('127.0.0.1')
|
||||
expect(pool.spec.config[:port]).to eq(5432)
|
||||
ensure
|
||||
pool.disconnect!
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.cached_column_exists?' do
|
||||
|
|
Loading…
Reference in New Issue