Module: NewRelic::CollectionHelper

Included in:
Agent::ErrorCollector, Agent::TransactionSampleBuilder, NoticedError
Defined in:
lib/new_relic/collection_helper.rb

Constant Summary collapse

DEFAULT_TRUNCATION_SIZE =
16 * 1024
DEFAULT_ARRAY_TRUNCATION_SIZE =
128

Instance Method Summary collapse

Instance Method Details

#normalize_params(params) ⇒ Object

Transform parameter hash into a hash whose values are strictly strings



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/new_relic/collection_helper.rb', line 9

def normalize_params(params)
  case params
    when Hash
      # optimize for empty hash since that is often what this is called with.
      return params if params.empty?
      new_params = {}
      params.each do | key, value |
        new_params[truncate(normalize_params(key),64)] = normalize_params(value)
      end
      new_params
    when Symbol, FalseClass, TrueClass, nil
      params
    when Numeric
      truncate(params.to_s)
    when String
      truncate(params)
    when Array
      params.first(DEFAULT_ARRAY_TRUNCATION_SIZE).map{|item| normalize_params(item)}
  else
    truncate(flatten(params))
  end
end

#strip_nr_from_backtrace(backtrace) ⇒ Object

Return an array of strings (backtrace), cleaned up for readability Return nil if there is no backtrace



35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/new_relic/collection_helper.rb', line 35

def strip_nr_from_backtrace(backtrace)
  if backtrace && !Agent.config[:disable_backtrace_cleanup]
    # this is for 1.9.1, where strings no longer have Enumerable
    backtrace = backtrace.split("\n") if String === backtrace
    backtrace = backtrace.map &:to_s
    backtrace = backtrace.reject do |line|
      line.include?(NewRelic::Control.newrelic_root) or
      line =~ /^newrelic_rpm\s/
    end
    # rename methods back to their original state
    backtrace = backtrace.collect {|line| line.gsub(/_without_(newrelic|trace)/, "")}
  end
  backtrace
end