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::Transaction.start_datastore_segment(NewRelic::Agent::Datastores::Redis::PRODUCT_NAME,
operation, nil, hostname, port_path_or_id, db)
begin
segment.notice_nosql_statement(statement)
call_pipeline_without_new_relic(*args, &block)
ensure
segment.finish
end
end