Cache InfluxDB settings after the first use
This ensures we don't need to load anything from either PostgreSQL or the Rails cache whenever creating new InfluxDB connections.
This commit is contained in:
parent
a6c60127e3
commit
55ed6e1c96
|
@ -6,16 +6,21 @@ module Gitlab
|
|||
METRICS_ROOT = Rails.root.join('lib', 'gitlab', 'metrics').to_s
|
||||
PATH_REGEX = /^#{RAILS_ROOT}\/?/
|
||||
|
||||
def self.pool_size
|
||||
current_application_settings[:metrics_pool_size] || 16
|
||||
end
|
||||
|
||||
def self.timeout
|
||||
current_application_settings[:metrics_timeout] || 10
|
||||
def self.settings
|
||||
@settings ||= {
|
||||
enabled: current_application_settings[:metrics_enabled],
|
||||
pool_size: current_application_settings[:metrics_pool_size],
|
||||
timeout: current_application_settings[:metrics_timeout],
|
||||
method_call_threshold: current_application_settings[:metrics_method_call_threshold],
|
||||
host: current_application_settings[:metrics_host],
|
||||
username: current_application_settings[:metrics_username],
|
||||
password: current_application_settings[:metrics_password],
|
||||
port: current_application_settings[:metrics_port]
|
||||
}
|
||||
end
|
||||
|
||||
def self.enabled?
|
||||
current_application_settings[:metrics_enabled] || false
|
||||
settings[:enabled] || false
|
||||
end
|
||||
|
||||
def self.mri?
|
||||
|
@ -26,8 +31,7 @@ module Gitlab
|
|||
# This is memoized since this method is called for every instrumented
|
||||
# method. Loading data from an external cache on every method call slows
|
||||
# things down too much.
|
||||
@method_call_threshold ||=
|
||||
(current_application_settings[:metrics_method_call_threshold] || 10)
|
||||
@method_call_threshold ||= settings[:method_call_threshold]
|
||||
end
|
||||
|
||||
def self.pool
|
||||
|
@ -90,11 +94,11 @@ module Gitlab
|
|||
# When enabled this should be set before being used as the usual pattern
|
||||
# "@foo ||= bar" is _not_ thread-safe.
|
||||
if enabled?
|
||||
@pool = ConnectionPool.new(size: pool_size, timeout: timeout) do
|
||||
host = current_application_settings[:metrics_host]
|
||||
user = current_application_settings[:metrics_username]
|
||||
pw = current_application_settings[:metrics_password]
|
||||
port = current_application_settings[:metrics_port]
|
||||
@pool = ConnectionPool.new(size: settings[:pool_size], timeout: settings[:timeout]) do
|
||||
host = settings[:host]
|
||||
user = settings[:username]
|
||||
pw = settings[:password]
|
||||
port = settings[:port]
|
||||
|
||||
InfluxDB::Client.
|
||||
new(udp: { host: host, port: port }, username: user, password: pw)
|
||||
|
|
|
@ -1,15 +1,9 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::Metrics do
|
||||
describe '.pool_size' do
|
||||
it 'returns a Fixnum' do
|
||||
expect(described_class.pool_size).to be_an_instance_of(Fixnum)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.timeout' do
|
||||
it 'returns a Fixnum' do
|
||||
expect(described_class.timeout).to be_an_instance_of(Fixnum)
|
||||
describe '.settings' do
|
||||
it 'returns a Hash' do
|
||||
expect(described_class.settings).to be_an_instance_of(Hash)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue