summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-06-20 16:34:42 +0000
committerStan Hu <stanhu@gmail.com>2018-06-20 16:34:42 +0000
commit88ceef87e3d2d9a0829679b6da9b970c4eff9ab4 (patch)
tree52a504f58e3c7c58cc09305ca1424a5e6a3dd170 /lib
parentc9eb56d511eeda596741045ab1964bfba0e6186e (diff)
parentd73e68deb55ea9a5b52facd2f701b9772c0717ac (diff)
downloadgitlab-ce-88ceef87e3d2d9a0829679b6da9b970c4eff9ab4.tar.gz
Merge branch 'limit-metrics-content-type' into 'master'
Limit the action suffixes in transaction metrics See merge request gitlab-org/gitlab-ce!20032
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/metrics/web_transaction.rb9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/gitlab/metrics/web_transaction.rb b/lib/gitlab/metrics/web_transaction.rb
index 3799aaebf1c..723ca576aab 100644
--- a/lib/gitlab/metrics/web_transaction.rb
+++ b/lib/gitlab/metrics/web_transaction.rb
@@ -3,6 +3,7 @@ module Gitlab
class WebTransaction < Transaction
CONTROLLER_KEY = 'action_controller.instance'.freeze
ENDPOINT_KEY = 'api.endpoint'.freeze
+ ALLOWED_SUFFIXES = Set.new(%w[json js atom rss xml zip])
def initialize(env)
super()
@@ -32,9 +33,13 @@ module Gitlab
# Devise exposes a method called "request_format" that does the below.
# However, this method is not available to all controllers (e.g. certain
# Doorkeeper controllers). As such we use the underlying code directly.
- suffix = controller.request.format.try(:ref)
+ suffix = controller.request.format.try(:ref).to_s
- if suffix && suffix != :html
+ # Sometimes the request format is set to silly data such as
+ # "application/xrds+xml" or actual URLs. To prevent such values from
+ # increasing the cardinality of our metrics, we limit the number of
+ # possible suffixes.
+ if suffix && ALLOWED_SUFFIXES.include?(suffix)
action += ".#{suffix}"
end