lib/new_relic/agent/instrumentation/redis.rb in newrelic_rpm-6.11.0.365 vs lib/new_relic/agent/instrumentation/redis.rb in newrelic_rpm-6.12.0.367
- old
+ new
@@ -1,8 +1,8 @@
# encoding: utf-8
# This file is distributed under New Relic's license terms.
-# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
+# See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
require 'new_relic/agent/datastores'
require 'new_relic/agent/datastores/redis'
module NewRelic
@@ -53,81 +53,160 @@
NewRelic::Agent.logger.info 'Installing Redis Instrumentation'
Redis::Client.class_eval do
alias_method :call_without_new_relic, :call
- def call(*args, &block)
- operation = args[0][0]
- statement = ::NewRelic::Agent::Datastores::Redis.format_command(args[0])
-
- hostname = NewRelic::Agent::Instrumentation::Redis.host_for(self)
- port_path_or_id = NewRelic::Agent::Instrumentation::Redis.port_path_or_id_for(self)
-
- segment = NewRelic::Agent::Tracer.start_datastore_segment(
- product: NewRelic::Agent::Datastores::Redis::PRODUCT_NAME,
- operation: operation,
- host: hostname,
- port_path_or_id: port_path_or_id,
- database_name: db
- )
- begin
- segment.notice_nosql_statement(statement) if statement
- NewRelic::Agent::Tracer.capture_segment_error segment do
- call_without_new_relic(*args, &block)
+ if RUBY_VERSION < "2.7.0"
+ def call(*args, &block)
+ operation = args[0][0]
+ statement = ::NewRelic::Agent::Datastores::Redis.format_command(args[0])
+
+ hostname = NewRelic::Agent::Instrumentation::Redis.host_for(self)
+ port_path_or_id = NewRelic::Agent::Instrumentation::Redis.port_path_or_id_for(self)
+
+ segment = NewRelic::Agent::Tracer.start_datastore_segment(
+ product: NewRelic::Agent::Datastores::Redis::PRODUCT_NAME,
+ operation: operation,
+ host: hostname,
+ port_path_or_id: port_path_or_id,
+ database_name: db
+ )
+ begin
+ segment.notice_nosql_statement(statement) if statement
+ NewRelic::Agent::Tracer.capture_segment_error segment do
+ call_without_new_relic(*args, &block)
+ end
+ ensure
+ segment.finish if segment
end
- ensure
- segment.finish if segment
end
+ else
+ def call(*args, **kwargs, &block)
+ operation = args[0][0]
+ statement = ::NewRelic::Agent::Datastores::Redis.format_command(args[0])
+
+ hostname = NewRelic::Agent::Instrumentation::Redis.host_for(self)
+ port_path_or_id = NewRelic::Agent::Instrumentation::Redis.port_path_or_id_for(self)
+
+ segment = NewRelic::Agent::Tracer.start_datastore_segment(
+ product: NewRelic::Agent::Datastores::Redis::PRODUCT_NAME,
+ operation: operation,
+ host: hostname,
+ port_path_or_id: port_path_or_id,
+ database_name: db
+ )
+ begin
+ segment.notice_nosql_statement(statement) if statement
+ NewRelic::Agent::Tracer.capture_segment_error segment do
+ call_without_new_relic(*args, **kwargs, &block)
+ end
+ ensure
+ segment.finish if segment
+ end
+ end
end
- alias_method :call_pipeline_without_new_relic, :call_pipeline
- def call_pipeline(*args, &block)
- pipeline = args[0]
- operation = pipeline.is_a?(::Redis::Pipeline::Multi) ? NewRelic::Agent::Datastores::Redis::MULTI_OPERATION : NewRelic::Agent::Datastores::Redis::PIPELINE_OPERATION
- statement = ::NewRelic::Agent::Datastores::Redis.format_pipeline_commands(pipeline.commands)
- hostname = NewRelic::Agent::Instrumentation::Redis.host_for(self)
- port_path_or_id = NewRelic::Agent::Instrumentation::Redis.port_path_or_id_for(self)
+ alias_method :call_pipeline_without_new_relic, :call_pipeline
- segment = NewRelic::Agent::Tracer.start_datastore_segment(
- product: NewRelic::Agent::Datastores::Redis::PRODUCT_NAME,
- operation: operation,
- host: hostname,
- port_path_or_id: port_path_or_id,
- database_name: db
- )
- begin
- segment.notice_nosql_statement(statement)
- NewRelic::Agent::Tracer.capture_segment_error segment do
- call_pipeline_without_new_relic(*args, &block)
+ if RUBY_VERSION < "2.7.0"
+ def call_pipeline(*args, &block)
+ pipeline = args[0]
+ operation = pipeline.is_a?(::Redis::Pipeline::Multi) ? NewRelic::Agent::Datastores::Redis::MULTI_OPERATION : NewRelic::Agent::Datastores::Redis::PIPELINE_OPERATION
+ statement = ::NewRelic::Agent::Datastores::Redis.format_pipeline_commands(pipeline.commands)
+
+ hostname = NewRelic::Agent::Instrumentation::Redis.host_for(self)
+ port_path_or_id = NewRelic::Agent::Instrumentation::Redis.port_path_or_id_for(self)
+
+ segment = NewRelic::Agent::Tracer.start_datastore_segment(
+ product: NewRelic::Agent::Datastores::Redis::PRODUCT_NAME,
+ operation: operation,
+ host: hostname,
+ port_path_or_id: port_path_or_id,
+ database_name: db
+ )
+ begin
+ segment.notice_nosql_statement(statement)
+ NewRelic::Agent::Tracer.capture_segment_error segment do
+ call_pipeline_without_new_relic(*args, &block)
+ end
+ ensure
+ segment.finish if segment
end
- ensure
- segment.finish if segment
end
+ else
+ def call_pipeline(*args, **kwargs, &block)
+ pipeline = args[0]
+ operation = pipeline.is_a?(::Redis::Pipeline::Multi) ? NewRelic::Agent::Datastores::Redis::MULTI_OPERATION : NewRelic::Agent::Datastores::Redis::PIPELINE_OPERATION
+ statement = ::NewRelic::Agent::Datastores::Redis.format_pipeline_commands(pipeline.commands)
+
+ hostname = NewRelic::Agent::Instrumentation::Redis.host_for(self)
+ port_path_or_id = NewRelic::Agent::Instrumentation::Redis.port_path_or_id_for(self)
+
+ segment = NewRelic::Agent::Tracer.start_datastore_segment(
+ product: NewRelic::Agent::Datastores::Redis::PRODUCT_NAME,
+ operation: operation,
+ host: hostname,
+ port_path_or_id: port_path_or_id,
+ database_name: db
+ )
+ begin
+ segment.notice_nosql_statement(statement)
+ NewRelic::Agent::Tracer.capture_segment_error segment do
+ call_pipeline_without_new_relic(*args, **kwargs, &block)
+ end
+ ensure
+ segment.finish if segment
+ end
+ end
end
alias_method :connect_without_new_relic, :connect
- def connect(*args, &block)
- hostname = NewRelic::Agent::Instrumentation::Redis.host_for(self)
- port_path_or_id = NewRelic::Agent::Instrumentation::Redis.port_path_or_id_for(self)
-
- segment = NewRelic::Agent::Tracer.start_datastore_segment(
- product: NewRelic::Agent::Datastores::Redis::PRODUCT_NAME,
- operation: NewRelic::Agent::Datastores::Redis::CONNECT,
- host: hostname,
- port_path_or_id: port_path_or_id,
- database_name: db
- )
-
- begin
- NewRelic::Agent::Tracer.capture_segment_error segment do
- connect_without_new_relic(*args, &block)
+ if RUBY_VERSION < "2.7.0"
+ def connect(*args, &block)
+ hostname = NewRelic::Agent::Instrumentation::Redis.host_for(self)
+ port_path_or_id = NewRelic::Agent::Instrumentation::Redis.port_path_or_id_for(self)
+
+ segment = NewRelic::Agent::Tracer.start_datastore_segment(
+ product: NewRelic::Agent::Datastores::Redis::PRODUCT_NAME,
+ operation: NewRelic::Agent::Datastores::Redis::CONNECT,
+ host: hostname,
+ port_path_or_id: port_path_or_id,
+ database_name: db
+ )
+
+ begin
+ NewRelic::Agent::Tracer.capture_segment_error segment do
+ connect_without_new_relic(*args, &block)
+ end
+ ensure
+ segment.finish if segment
end
- ensure
- segment.finish if segment
end
+ else
+ def connect(*args, **kwargs, &block)
+ hostname = NewRelic::Agent::Instrumentation::Redis.host_for(self)
+ port_path_or_id = NewRelic::Agent::Instrumentation::Redis.port_path_or_id_for(self)
+
+ segment = NewRelic::Agent::Tracer.start_datastore_segment(
+ product: NewRelic::Agent::Datastores::Redis::PRODUCT_NAME,
+ operation: NewRelic::Agent::Datastores::Redis::CONNECT,
+ host: hostname,
+ port_path_or_id: port_path_or_id,
+ database_name: db
+ )
+
+ begin
+ NewRelic::Agent::Tracer.capture_segment_error segment do
+ connect_without_new_relic(*args, **kwargs, &block)
+ end
+ ensure
+ segment.finish if segment
+ end
+ end
end
+
end
end
end