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 Gitlab
module Metrics module Metrics
module InfluxDb module InfluxDb
include Gitlab::CurrentSettings extend Gitlab::CurrentSettings
extend self
MUTEX = Mutex.new
private_constant :MUTEX
def influx_metrics_enabled? def influx_metrics_enabled?
settings[:enabled] || false settings[:enabled] || false
...@@ -35,10 +39,6 @@ module Gitlab ...@@ -35,10 +39,6 @@ module Gitlab
@method_call_threshold ||= settings[:method_call_threshold] @method_call_threshold ||= settings[:method_call_threshold]
end end
def pool
@pool
end
def submit_metrics(metrics) def submit_metrics(metrics)
prepared = prepare_metrics(metrics) prepared = prepare_metrics(metrics)
...@@ -149,8 +149,11 @@ module Gitlab ...@@ -149,8 +149,11 @@ module Gitlab
# When enabled this should be set before being used as the usual pattern # When enabled this should be set before being used as the usual pattern
# "@foo ||= bar" is _not_ thread-safe. # "@foo ||= bar" is _not_ thread-safe.
def pool
if influx_metrics_enabled? 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] host = settings[:host]
port = settings[:port] port = settings[:port]
...@@ -159,5 +162,9 @@ module Gitlab ...@@ -159,5 +162,9 @@ module Gitlab
end end
end end
end end
@pool
end
end
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