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



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/new_relic/collection_helper.rb', line 13

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



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/new_relic/collection_helper.rb', line 39

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