diff --git a/config/initializers/database_query_analyzers.rb b/config/initializers/database_query_analyzers.rb index a29cd6552ffd16d0801b8361954bee1c8151e26f..7d4802b76c27fe493395b663338ea018e91593ac 100644 --- a/config/initializers/database_query_analyzers.rb +++ b/config/initializers/database_query_analyzers.rb @@ -1,4 +1,6 @@ # frozen_string_literal: true # Currently we register validator only for `dev` or `test` environment -Gitlab::Database::QueryAnalyzer.new.hook! if Gitlab.dev_or_test_env? +if Gitlab.dev_or_test_env? || Gitlab::Utils.to_boolean(ENV['GITLAB_ENABLE_QUERY_ANALYZERS'], default: false) + Gitlab::Database::QueryAnalyzer.instance.hook! +end diff --git a/lib/gitlab/database/query_analyzer.rb b/lib/gitlab/database/query_analyzer.rb index 830ad1383c047832b37ca8d4bf6968334bae9488..6cbeefa0aae5960b205411f2ea31c8c7da838de3 100644 --- a/lib/gitlab/database/query_analyzer.rb +++ b/lib/gitlab/database/query_analyzer.rb @@ -5,6 +5,8 @@ module Database # The purpose of this class is to implement a various query analyzers based on `pg_query` # And process them all via `Gitlab::Database::QueryAnalyzers::*` class QueryAnalyzer + include ::Singleton + ANALYZERS = [].freeze Parsed = Struct.new( diff --git a/spec/lib/gitlab/database/query_analyzer_spec.rb b/spec/lib/gitlab/database/query_analyzer_spec.rb index 3567bd6a058783864296465ddf2982c2b8a9ee0d..f0a3021927ba7b75c362a7cfe631a83e22050c54 100644 --- a/spec/lib/gitlab/database/query_analyzer_spec.rb +++ b/spec/lib/gitlab/database/query_analyzer_spec.rb @@ -65,7 +65,7 @@ def process_sql(sql) ApplicationRecord.load_balancer.read_write do |connection| - described_class.new.send(:process_sql, sql, connection) + described_class.instance.send(:process_sql, sql, connection) end end end