Method: NewRelic::Agent::SqlSampler#save_slow_sql

Defined in:
lib/new_relic/agent/sql_sampler.rb

#save_slow_sql(transaction_sql_data) ⇒ Object

this should always be called under the @samples_lock

[View source]

83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/new_relic/agent/sql_sampler.rb', line 83

def save_slow_sql(transaction_sql_data)
  path = transaction_sql_data.path
  uri = transaction_sql_data.uri

  transaction_sql_data.sql_data.each do |sql_item|
    normalized_sql = sql_item.normalize
    sql_trace = @sql_traces[normalized_sql]
    if sql_trace
      sql_trace.aggregate(sql_item, path, uri)
    else
      if has_room?
        sql_trace = SqlTrace.new(normalized_sql, sql_item, path, uri)
      elsif should_add_trace?(sql_item)
        remove_shortest_trace
        sql_trace = SqlTrace.new(normalized_sql, sql_item, path, uri)
      end

      if sql_trace
        @sql_traces[normalized_sql] = sql_trace
      end
    end
  end
end