instana 1.11.2-java → 1.11.8-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.circleci/config.yml +168 -0
- data/README.md +1 -1
- data/Rakefile +5 -1
- data/gemfiles/rails60.gemfile +72 -0
- data/lib/instana/agent.rb +14 -1
- data/lib/instana/agent/helpers.rb +0 -8
- data/lib/instana/frameworks/instrumentation/action_view.rb +4 -4
- data/lib/instana/instrumentation/rack.rb +18 -3
- data/lib/instana/instrumentation/redis.rb +41 -53
- data/lib/instana/test.rb +4 -3
- data/lib/instana/tracer.rb +26 -5
- data/lib/instana/tracing/span.rb +9 -0
- data/lib/instana/util.rb +15 -1
- data/lib/instana/version.rb +1 -1
- data/test/frameworks/rack_test.rb +100 -60
- data/test/frameworks/rails/actionview5_test.rb +1 -1
- data/test/frameworks/sinatra_test.rb +26 -18
- data/test/instrumentation/grpc_test.rb +1 -1
- data/test/instrumentation/redis_test.rb +25 -28
- data/test/instrumentation/resque_test.rb +9 -16
- data/test/instrumentation/sidekiq-client_test.rb +7 -0
- data/test/instrumentation/sidekiq-worker_test.rb +6 -0
- data/test/jobs/resque_error_job.rb +2 -2
- data/test/jobs/resque_fast_job.rb +2 -2
- data/test/models/block6.rb +18 -0
- data/test/servers/rails_3205.rb +10 -1
- data/test/test_helper.rb +4 -9
- data/test/tracing/opentracing_test.rb +21 -0
- data/test/tracing/tracer_test.rb +31 -1
- metadata +6 -5
- data/.travis.yml +0 -43
- data/test/tracing/trace_test.rb +0 -67
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: caa415d38722203f24ce37abf43ebb8f81e209d682555b146873ab3c5b60a29d
|
4
|
+
data.tar.gz: 53e22add3047a33b51dba1d483b5bc5b97d05d66c501e0692ce3e4f12bcbae55
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1d7fda2142403d3195977cbbf3a60d6c1ce39b74a4ff5bd4dd8a2b84b23d2d643887adbdce7d1eb3fd9919460ea93fc682b15e6becf5c981b2fde760d2f9ec1
|
7
|
+
data.tar.gz: 30df9a2a1f2d31889db769244f12a48b167e4d08020aa0170e2e0e7c2088ecdeba590268b8a26017531bbccdd7195b5a6f6faf941661140cfe0e4446f579f549
|
@@ -0,0 +1,168 @@
|
|
1
|
+
version: 2.1
|
2
|
+
|
3
|
+
# More about orbs: https://circleci.com/docs/2.0/using-orbs/
|
4
|
+
orbs:
|
5
|
+
ruby: circleci/ruby@1.1.2
|
6
|
+
|
7
|
+
commands:
|
8
|
+
prelim-deps:
|
9
|
+
steps:
|
10
|
+
- run:
|
11
|
+
name: Preliminary Dependencies
|
12
|
+
command: |
|
13
|
+
gem update --system
|
14
|
+
gem --version
|
15
|
+
gem install bundler
|
16
|
+
bundler --version
|
17
|
+
bundle config set path './vendor/bundle'
|
18
|
+
|
19
|
+
run-tests:
|
20
|
+
steps:
|
21
|
+
- run:
|
22
|
+
name: Run the Tests
|
23
|
+
command: |
|
24
|
+
bundle exec rake test
|
25
|
+
|
26
|
+
save-stan-cache:
|
27
|
+
parameters:
|
28
|
+
gemfile:
|
29
|
+
default: "Gemfile"
|
30
|
+
type: string
|
31
|
+
steps:
|
32
|
+
- save_cache:
|
33
|
+
key: gem-cache-v1-{{ arch }}-{{ .Branch }}-{{ checksum "<<parameters.gemfile>>" }}
|
34
|
+
paths:
|
35
|
+
- vendor/bundle
|
36
|
+
|
37
|
+
restore-stan-cache:
|
38
|
+
parameters:
|
39
|
+
gemfile:
|
40
|
+
default: "Gemfile"
|
41
|
+
type: string
|
42
|
+
steps:
|
43
|
+
- restore_cache:
|
44
|
+
keys:
|
45
|
+
- gem-cache-v1-{{ arch }}-{{ .Branch }}-{{ checksum "<<parameters.gemfile>>" }}
|
46
|
+
- gem-cache-v1-{{ arch }}-{{ .Branch }}
|
47
|
+
- gem-cache-v1
|
48
|
+
|
49
|
+
bundle-install:
|
50
|
+
parameters:
|
51
|
+
gemfile:
|
52
|
+
default: "Gemfile"
|
53
|
+
type: string
|
54
|
+
steps:
|
55
|
+
- restore-stan-cache:
|
56
|
+
gemfile: <<parameters.gemfile>>
|
57
|
+
- run:
|
58
|
+
name: Bundle Installation
|
59
|
+
command: |
|
60
|
+
bundle install
|
61
|
+
- save-stan-cache:
|
62
|
+
gemfile: <<parameters.gemfile>>
|
63
|
+
|
64
|
+
jobs:
|
65
|
+
ruby26:
|
66
|
+
parallelism: 3
|
67
|
+
docker:
|
68
|
+
- image: circleci/ruby:2.6.3-stretch-node
|
69
|
+
executor: ruby/default
|
70
|
+
environment:
|
71
|
+
BUNDLE_JOBS: "3"
|
72
|
+
BUNDLE_RETRY: "3"
|
73
|
+
|
74
|
+
steps:
|
75
|
+
- checkout
|
76
|
+
- prelim-deps
|
77
|
+
- bundle-install
|
78
|
+
- run-tests
|
79
|
+
|
80
|
+
rails50:
|
81
|
+
parallelism: 3
|
82
|
+
docker:
|
83
|
+
- image: circleci/ruby:2.6.3-stretch-node
|
84
|
+
- image: mariadb
|
85
|
+
environment:
|
86
|
+
MYSQL_DATABASE: 'travis_ci_test'
|
87
|
+
MYSQL_USER: 'root'
|
88
|
+
MYSQL_PASSWORD: ''
|
89
|
+
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
|
90
|
+
MYSQL_ROOT_PASSWORD: ''
|
91
|
+
MYSQL_ROOT_HOST: '%'
|
92
|
+
executor: ruby/default
|
93
|
+
environment:
|
94
|
+
BUNDLE_JOBS: "3"
|
95
|
+
BUNDLE_RETRY: "3"
|
96
|
+
BUNDLE_GEMFILE: "./gemfiles/rails50.gemfile"
|
97
|
+
|
98
|
+
steps:
|
99
|
+
- checkout
|
100
|
+
- prelim-deps
|
101
|
+
- bundle-install:
|
102
|
+
gemfile: "./gemfiles/rails50.gemfile"
|
103
|
+
- run-tests
|
104
|
+
|
105
|
+
rails60:
|
106
|
+
parallelism: 3
|
107
|
+
docker:
|
108
|
+
- image: circleci/ruby:2.6.3-stretch-node
|
109
|
+
- image: mariadb
|
110
|
+
environment:
|
111
|
+
MYSQL_DATABASE: 'travis_ci_test'
|
112
|
+
MYSQL_USER: 'root'
|
113
|
+
MYSQL_PASSWORD: ''
|
114
|
+
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
|
115
|
+
MYSQL_ROOT_PASSWORD: ''
|
116
|
+
MYSQL_ROOT_HOST: '%'
|
117
|
+
executor: ruby/default
|
118
|
+
environment:
|
119
|
+
BUNDLE_JOBS: "3"
|
120
|
+
BUNDLE_RETRY: "3"
|
121
|
+
BUNDLE_GEMFILE: "./gemfiles/rails60.gemfile"
|
122
|
+
|
123
|
+
steps:
|
124
|
+
- checkout
|
125
|
+
- prelim-deps
|
126
|
+
- bundle-install:
|
127
|
+
gemfile: "./gemfiles/rails60.gemfile"
|
128
|
+
- run-tests
|
129
|
+
|
130
|
+
libraries:
|
131
|
+
parallelism: 3
|
132
|
+
docker:
|
133
|
+
- image: circleci/ruby:2.6.3-stretch-node
|
134
|
+
- image: mariadb
|
135
|
+
environment:
|
136
|
+
MYSQL_DATABASE: 'travis_ci_test'
|
137
|
+
MYSQL_USER: 'root'
|
138
|
+
MYSQL_PASSWORD: ''
|
139
|
+
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
|
140
|
+
MYSQL_ROOT_PASSWORD: ''
|
141
|
+
MYSQL_ROOT_HOST: '%'
|
142
|
+
- image: memcached
|
143
|
+
- image: postgres
|
144
|
+
environment:
|
145
|
+
POSTGRES_USER: 'stan'
|
146
|
+
POSTGRES_PASSWORD: 'stanlikesdata'
|
147
|
+
- image: redis
|
148
|
+
executor: ruby/default
|
149
|
+
environment:
|
150
|
+
BUNDLE_JOBS: "3"
|
151
|
+
BUNDLE_RETRY: "3"
|
152
|
+
BUNDLE_GEMFILE: "./gemfiles/libraries.gemfile"
|
153
|
+
|
154
|
+
steps:
|
155
|
+
- checkout
|
156
|
+
- prelim-deps
|
157
|
+
- bundle-install:
|
158
|
+
gemfile: "./gemfiles/libraries.gemfile"
|
159
|
+
- run-tests
|
160
|
+
|
161
|
+
workflows:
|
162
|
+
version: 2
|
163
|
+
whole-enchilada-MRI26:
|
164
|
+
jobs:
|
165
|
+
- ruby26
|
166
|
+
- rails50
|
167
|
+
- rails60
|
168
|
+
- libraries
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -12,7 +12,11 @@ Rake::TestTask.new(:test) do |t|
|
|
12
12
|
|
13
13
|
if ENV.key?('BUNDLE_GEMFILE')
|
14
14
|
case File.basename(ENV['BUNDLE_GEMFILE']).split('.').first
|
15
|
-
when /
|
15
|
+
when /rails6/
|
16
|
+
t.test_files = %w(test/frameworks/rails/activerecord_test.rb
|
17
|
+
test/frameworks/rails/actioncontroller_test.rb
|
18
|
+
test/frameworks/rails/actionview5_test.rb)
|
19
|
+
when /rails5/
|
16
20
|
t.test_files = %w(test/frameworks/rails/activerecord_test.rb
|
17
21
|
test/frameworks/rails/actioncontroller_test.rb
|
18
22
|
test/frameworks/rails/actionview5_test.rb)
|
@@ -0,0 +1,72 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
3
|
+
|
4
|
+
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
5
|
+
gem 'rails', '~> 6.0.2', '>= 6.0.2.1'
|
6
|
+
# Use sqlite3 as the database for Active Record
|
7
|
+
gem 'sqlite3', '~> 1.4'
|
8
|
+
# Use Puma as the app server
|
9
|
+
gem 'puma', '~> 4.1'
|
10
|
+
# Use SCSS for stylesheets
|
11
|
+
gem 'sass-rails', '>= 6'
|
12
|
+
# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
|
13
|
+
gem 'webpacker', '~> 4.0'
|
14
|
+
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
|
15
|
+
gem 'turbolinks', '~> 5'
|
16
|
+
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
|
17
|
+
gem 'jbuilder', '~> 2.7'
|
18
|
+
# Use Redis adapter to run Action Cable in production
|
19
|
+
# gem 'redis', '~> 4.0'
|
20
|
+
# Use Active Model has_secure_password
|
21
|
+
# gem 'bcrypt', '~> 3.1.7'
|
22
|
+
|
23
|
+
gem 'mysql2', '0.4.10'
|
24
|
+
|
25
|
+
# Use Active Storage variant
|
26
|
+
# gem 'image_processing', '~> 1.2'
|
27
|
+
|
28
|
+
# Reduces boot times through caching; required in config/boot.rb
|
29
|
+
gem 'bootsnap', '>= 1.4.2', require: false
|
30
|
+
|
31
|
+
group :development, :test do
|
32
|
+
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
33
|
+
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
|
34
|
+
end
|
35
|
+
|
36
|
+
group :development do
|
37
|
+
# Access an interactive console on exception pages or by calling 'console' anywhere in the code.
|
38
|
+
gem 'web-console', '>= 3.3.0'
|
39
|
+
gem 'listen', '>= 3.0.5', '< 3.2'
|
40
|
+
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
41
|
+
gem 'spring'
|
42
|
+
gem 'spring-watcher-listen', '~> 2.0.0'
|
43
|
+
end
|
44
|
+
|
45
|
+
group :test do
|
46
|
+
# Adds support for Capybara system testing and selenium driver
|
47
|
+
gem 'capybara', '>= 2.15'
|
48
|
+
gem 'selenium-webdriver'
|
49
|
+
# Easy installation and use of web drivers to run system tests with browsers
|
50
|
+
gem 'webdrivers'
|
51
|
+
end
|
52
|
+
|
53
|
+
group :development, :test do
|
54
|
+
gem 'rake'
|
55
|
+
gem 'minitest', '5.9.1'
|
56
|
+
gem 'minitest-reporters'
|
57
|
+
gem 'minitest-debugger', :require => false
|
58
|
+
gem 'rack-test'
|
59
|
+
gem 'webmock'
|
60
|
+
# public_suffix dropped support for Ruby 2.1 and earlier.
|
61
|
+
gem 'public_suffix', '< 3.0'
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
66
|
+
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
67
|
+
|
68
|
+
# Include the Instana Ruby gem's base set of gems
|
69
|
+
gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
|
70
|
+
|
71
|
+
|
72
|
+
# vim:syntax=ruby
|
data/lib/instana/agent.rb
CHANGED
@@ -246,7 +246,20 @@ module Instana
|
|
246
246
|
|
247
247
|
sched_pid = get_sched_pid
|
248
248
|
announce_payload[:pid] = sched_pid
|
249
|
-
|
249
|
+
|
250
|
+
if running_in_container?
|
251
|
+
if sched_pid != Process.pid
|
252
|
+
# In container: sched reveals true PID
|
253
|
+
announce_payload[:pidFromParentNS] = true
|
254
|
+
else
|
255
|
+
# In container: sched told us nothing
|
256
|
+
announce_payload[:pidFromParentNS] = false
|
257
|
+
end
|
258
|
+
else
|
259
|
+
# Not in a container
|
260
|
+
announce_payload[:pidFromParentNS] = true
|
261
|
+
end
|
262
|
+
|
250
263
|
else
|
251
264
|
announce_payload[:pid] = Process.pid
|
252
265
|
announce_payload[:pidFromParentNS] = true
|
@@ -1,12 +1,4 @@
|
|
1
1
|
module AgentHelpers
|
2
|
-
# Indicates whether we are running in a pid namespace (such as
|
3
|
-
# Docker).
|
4
|
-
#
|
5
|
-
def pid_namespace?
|
6
|
-
return false unless @is_linux
|
7
|
-
Process.pid != get_real_pid
|
8
|
-
end
|
9
|
-
|
10
2
|
# Attempts to determine if we're running inside a container.
|
11
3
|
# The qualifications are:
|
12
4
|
# 1. Linux based OS
|
@@ -6,13 +6,13 @@ module Instana
|
|
6
6
|
::Instana::Util.method_alias(klass, :render_collection)
|
7
7
|
end
|
8
8
|
|
9
|
-
def render_partial_with_instana
|
9
|
+
def render_partial_with_instana(*args)
|
10
10
|
kv_payload = { :render => {} }
|
11
11
|
kv_payload[:render][:type] = :partial
|
12
12
|
kv_payload[:render][:name] = @options[:partial].to_s if @options.is_a?(Hash)
|
13
13
|
|
14
14
|
::Instana.tracer.log_entry(:render, kv_payload)
|
15
|
-
render_partial_without_instana
|
15
|
+
render_partial_without_instana(*args)
|
16
16
|
rescue Exception => e
|
17
17
|
::Instana.tracer.log_error(e)
|
18
18
|
raise
|
@@ -20,13 +20,13 @@ module Instana
|
|
20
20
|
::Instana.tracer.log_exit(:render)
|
21
21
|
end
|
22
22
|
|
23
|
-
def render_collection_with_instana
|
23
|
+
def render_collection_with_instana(*args)
|
24
24
|
kv_payload = { :render => {} }
|
25
25
|
kv_payload[:render][:type] = :collection
|
26
26
|
kv_payload[:render][:name] = @path.to_s
|
27
27
|
|
28
28
|
::Instana.tracer.log_entry(:render, kv_payload)
|
29
|
-
render_collection_without_instana
|
29
|
+
render_collection_without_instana(*args)
|
30
30
|
rescue Exception => e
|
31
31
|
::Instana.tracer.log_error(e)
|
32
32
|
raise
|
@@ -8,8 +8,9 @@ module Instana
|
|
8
8
|
@app = app
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
12
|
-
kvs = {
|
11
|
+
def collect_kvs(env)
|
12
|
+
kvs = {}
|
13
|
+
kvs[:http] = {}
|
13
14
|
kvs[:http][:method] = env['REQUEST_METHOD']
|
14
15
|
kvs[:http][:url] = ::CGI.unescape(env['PATH_INFO'])
|
15
16
|
|
@@ -37,15 +38,27 @@ module Instana
|
|
37
38
|
end
|
38
39
|
}
|
39
40
|
end
|
41
|
+
return kvs
|
42
|
+
end
|
40
43
|
|
44
|
+
def call(env)
|
41
45
|
# Check incoming context
|
42
46
|
incoming_context = {}
|
43
47
|
if env.key?('HTTP_X_INSTANA_T')
|
44
48
|
incoming_context[:trace_id] = ::Instana::Util.header_to_id(env['HTTP_X_INSTANA_T'])
|
45
49
|
incoming_context[:span_id] = ::Instana::Util.header_to_id(env['HTTP_X_INSTANA_S']) if env.key?('HTTP_X_INSTANA_S')
|
46
50
|
incoming_context[:level] = env['HTTP_X_INSTANA_L'] if env.key?('HTTP_X_INSTANA_L')
|
51
|
+
|
52
|
+
# Honor X-Instana-L
|
53
|
+
if incoming_context[:level] and incoming_context[:level].length > 0
|
54
|
+
if incoming_context[:level][0] == "0"
|
55
|
+
return @app.call(env)
|
56
|
+
end
|
57
|
+
end
|
47
58
|
end
|
48
59
|
|
60
|
+
kvs = collect_kvs(env)
|
61
|
+
|
49
62
|
::Instana.tracer.log_start_or_continue(:rack, {}, incoming_context)
|
50
63
|
|
51
64
|
status, headers, response = @app.call(env)
|
@@ -78,8 +91,10 @@ module Instana
|
|
78
91
|
# Set reponse headers; encode as hex string
|
79
92
|
headers['X-Instana-T'] = ::Instana::Util.id_to_header(trace_id)
|
80
93
|
headers['X-Instana-S'] = ::Instana::Util.id_to_header(span_id)
|
94
|
+
headers['X-Instana-L'] = '1'
|
95
|
+
headers['Server-Timing'] = "intid;desc=#{::Instana::Util.id_to_header(trace_id)}"
|
96
|
+
::Instana.tracer.log_end(:rack, kvs)
|
81
97
|
end
|
82
|
-
::Instana.tracer.log_end(:rack, kvs)
|
83
98
|
end
|
84
99
|
end
|
85
100
|
end
|
@@ -1,47 +1,32 @@
|
|
1
|
-
module Instana
|
2
|
-
module Instrumentation
|
3
|
-
class Redis
|
4
|
-
def self.get_host(client)
|
5
|
-
client.host
|
6
|
-
end
|
7
|
-
|
8
|
-
def self.get_port(client)
|
9
|
-
client.port
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.pipeline_command(pipeline)
|
13
|
-
pipeline.is_a?(::Redis::Pipeline::Multi) ? 'MULTI' : 'PIPELINE'
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
1
|
if defined?(::Redis) && ::Instana.config[:redis][:enabled]
|
20
2
|
::Redis::Client.class_eval do
|
21
3
|
def call_with_instana(*args, &block)
|
22
4
|
kv_payload = { redis: {} }
|
5
|
+
dnt_spans = [:redis, :'resque-client', :'sidekiq-client']
|
23
6
|
|
24
|
-
if !Instana.tracer.tracing?
|
7
|
+
if !Instana.tracer.tracing? || dnt_spans.include?(::Instana.tracer.current_span.name)
|
25
8
|
return call_without_instana(*args, &block)
|
26
9
|
end
|
27
10
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
11
|
+
begin
|
12
|
+
::Instana.tracer.log_entry(:redis)
|
13
|
+
|
14
|
+
begin
|
15
|
+
kv_payload[:redis][:connection] = "#{self.host}:#{self.port}"
|
16
|
+
kv_payload[:redis][:db] = db.to_s
|
17
|
+
kv_payload[:redis][:command] = args[0][0].to_s.upcase
|
18
|
+
rescue
|
19
|
+
nil
|
20
|
+
end
|
36
21
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
22
|
+
call_without_instana(*args, &block)
|
23
|
+
rescue => e
|
24
|
+
::Instana.tracer.log_info({ redis: {error: true} })
|
25
|
+
::Instana.tracer.log_error(e)
|
26
|
+
raise
|
27
|
+
ensure
|
28
|
+
::Instana.tracer.log_exit(:redis, kv_payload)
|
29
|
+
end
|
45
30
|
end
|
46
31
|
|
47
32
|
::Instana.logger.debug "Instrumenting Redis"
|
@@ -51,29 +36,32 @@ if defined?(::Redis) && ::Instana.config[:redis][:enabled]
|
|
51
36
|
|
52
37
|
def call_pipeline_with_instana(*args, &block)
|
53
38
|
kv_payload = { redis: {} }
|
39
|
+
dnt_spans = [:redis, :'resque-client', :'sidekiq-client']
|
54
40
|
|
55
|
-
if !Instana.tracer.tracing?
|
41
|
+
if !Instana.tracer.tracing? || dnt_spans.include?(::Instana.tracer.current_span.name)
|
56
42
|
return call_pipeline_without_instana(*args, &block)
|
57
43
|
end
|
58
44
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
45
|
+
begin
|
46
|
+
::Instana.tracer.log_entry(:redis)
|
47
|
+
|
48
|
+
pipeline = args.first
|
49
|
+
begin
|
50
|
+
kv_payload[:redis][:connection] = "#{self.host}:#{self.port}"
|
51
|
+
kv_payload[:redis][:db] = db.to_s
|
52
|
+
kv_payload[:redis][:command] = pipeline.is_a?(::Redis::Pipeline::Multi) ? 'MULTI' : 'PIPELINE'
|
53
|
+
rescue
|
54
|
+
nil
|
55
|
+
end
|
68
56
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
57
|
+
call_pipeline_without_instana(*args, &block)
|
58
|
+
rescue => e
|
59
|
+
::Instana.tracer.log_info({ redis: {error: true} })
|
60
|
+
::Instana.tracer.log_error(e)
|
61
|
+
raise
|
62
|
+
ensure
|
63
|
+
::Instana.tracer.log_exit(:redis, kv_payload)
|
64
|
+
end
|
77
65
|
end
|
78
66
|
|
79
67
|
alias call_pipeline_without_instana call_pipeline
|