lib/new_relic/agent/datastores.rb in newrelic_rpm-3.16.0.318 vs lib/new_relic/agent/datastores.rb in newrelic_rpm-3.16.1.320
- old
+ new
@@ -43,13 +43,15 @@
visibility = NewRelic::Helper.instance_method_visibility(clazz, method_name)
alias_method method_name_without_newrelic, method_name
define_method(method_name) do |*args, &blk|
- metrics = MetricHelper.metrics_for(product, operation)
- NewRelic::Agent::MethodTracer.trace_execution_scoped(metrics) do
+ segment = NewRelic::Agent::Transaction.start_datastore_segment(product, operation)
+ begin
send(method_name_without_newrelic, *args, &blk)
+ ensure
+ segment.finish
end
end
send visibility, method_name
send visibility, method_name_without_newrelic
@@ -101,21 +103,19 @@
# @api public
#
def self.wrap(product, operation, collection = nil, callback = nil)
return yield unless operation
- metrics = MetricHelper.metrics_for(product, operation, collection)
- scoped_metric = metrics.first
- NewRelic::Agent::MethodTracer.trace_execution_scoped(metrics) do
- t0 = Time.now if callback
- begin
- result = yield
- ensure
- if callback
- elapsed_time = (Time.now - t0).to_f
- callback.call(result, scoped_metric, elapsed_time)
- end
+ segment = NewRelic::Agent::Transaction.start_datastore_segment(product, operation, collection)
+
+ begin
+ result = yield
+ ensure
+ if callback
+ elapsed_time = (Time.now - segment.start_time).to_f
+ callback.call(result, segment.name, elapsed_time)
end
+ segment.finish
end
end
# @!group Capturing query / statement text