Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/database/query_analyzer.rb')
-rw-r--r--lib/gitlab/database/query_analyzer.rb20
1 files changed, 12 insertions, 8 deletions
diff --git a/lib/gitlab/database/query_analyzer.rb b/lib/gitlab/database/query_analyzer.rb
index 2736f9d18dc..0c78dda734c 100644
--- a/lib/gitlab/database/query_analyzer.rb
+++ b/lib/gitlab/database/query_analyzer.rb
@@ -30,13 +30,17 @@ module Gitlab
end
end
- def within
+ def within(user_analyzers = nil)
# Due to singleton nature of analyzers
# only an outer invocation of the `.within`
# is allowed to initialize them
- return yield if already_within?
+ if already_within?
+ raise 'Query analyzers are already defined, cannot re-define them.' if user_analyzers
- begin!
+ return yield
+ end
+
+ begin!(user_analyzers || all_analyzers)
begin
yield
@@ -61,21 +65,21 @@ module Gitlab
next if analyzer.suppressed? && !analyzer.requires_tracking?(parsed)
analyzer.analyze(parsed)
- rescue StandardError, QueryAnalyzers::Base::QueryAnalyzerError => e
+ rescue StandardError, ::Gitlab::Database::QueryAnalyzers::Base::QueryAnalyzerError => e
# We catch all standard errors to prevent validation errors to introduce fatal errors in production
Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e)
end
end
# Enable query analyzers
- def begin!
- analyzers = all_analyzers.select do |analyzer|
+ def begin!(analyzers = all_analyzers)
+ analyzers = analyzers.select do |analyzer|
if analyzer.enabled?
analyzer.begin!
true
end
- rescue StandardError, QueryAnalyzers::Base::QueryAnalyzerError => e
+ rescue StandardError, ::Gitlab::Database::QueryAnalyzers::Base::QueryAnalyzerError => e
Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e)
false
@@ -88,7 +92,7 @@ module Gitlab
def end!
enabled_analyzers.select do |analyzer|
analyzer.end!
- rescue StandardError, QueryAnalyzers::Base::QueryAnalyzerError => e
+ rescue StandardError, ::Gitlab::Database::QueryAnalyzers::Base::QueryAnalyzerError => e
Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e)
end