Commit 68b946e3 authored by Pawel Chojnacki's avatar Pawel Chojnacki

Fix circular dependency condition with `current_application_settings`

`current_application_settings` used by `influx_metrics_enabled`
executed a markdown parsing code that was measured using `Gitlab::Metrics.measure`

But since the Gitlab::Metrics::InfluxDb was not yet build so Gitlab::Metrics
did not yet have `measure` method. Causing the NoMethodError.

However If run was successful at least once then result was cached in a file and this code never executed again.
Which caused this issue to only show up in CI preparation step.
parent b668aaf4
module Gitlab
module Metrics
module InfluxDb
include Gitlab::CurrentSettings
extend Gitlab::CurrentSettings
extend self
MUTEX = Mutex.new
private_constant :MUTEX
def influx_metrics_enabled?
settings[:enabled] || false
......@@ -35,10 +39,6 @@ module Gitlab
@method_call_threshold ||= settings[:method_call_threshold]
end
def pool
@pool
end
def submit_metrics(metrics)
prepared = prepare_metrics(metrics)
......@@ -149,8 +149,11 @@ module Gitlab
# When enabled this should be set before being used as the usual pattern
# "@foo ||= bar" is _not_ thread-safe.
def pool
if influx_metrics_enabled?
@pool = ConnectionPool.new(size: settings[:pool_size], timeout: settings[:timeout]) do
if @pool.nil?
MUTEX.synchronize do
@pool ||= ConnectionPool.new(size: settings[:pool_size], timeout: settings[:timeout]) do
host = settings[:host]
port = settings[:port]
......@@ -159,5 +162,9 @@ module Gitlab
end
end
end
@pool
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