solarwinds_apm 5.1.3 → 5.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +9 -2
  3. data/CHANGELOG.md +27 -0
  4. data/README.md +5 -3
  5. data/ext/oboe_metal/extconf.rb +18 -6
  6. data/ext/oboe_metal/extconf_local.rb +1 -1
  7. data/ext/oboe_metal/lib/liboboe-1.0-aarch64.so.sha256 +1 -0
  8. data/ext/oboe_metal/lib/liboboe-1.0-alpine-aarch64.so.sha256 +1 -0
  9. data/ext/oboe_metal/lib/liboboe-1.0-alpine-x86_64.so.sha256 +1 -0
  10. data/ext/oboe_metal/lib/liboboe-1.0-x86_64.so.sha256 +1 -0
  11. data/ext/oboe_metal/src/VERSION +1 -1
  12. data/ext/oboe_metal/src/oboe.h +2 -2
  13. data/ext/oboe_metal/src/oboe_api.cpp +4 -0
  14. data/lib/rails/generators/solarwinds_apm/install_generator.rb +2 -2
  15. data/lib/rails/generators/solarwinds_apm/templates/solarwinds_apm_initializer.rb +8 -6
  16. data/lib/solarwinds_apm/inst/curb.rb +1 -0
  17. data/lib/solarwinds_apm/inst/httpclient.rb +1 -0
  18. data/lib/solarwinds_apm/inst/redis.rb +36 -29
  19. data/lib/solarwinds_apm/inst/redis_v4.rb +273 -0
  20. data/lib/solarwinds_apm/inst/typhoeus.rb +1 -1
  21. data/lib/solarwinds_apm/util.rb +134 -42
  22. data/lib/solarwinds_apm/version.rb +1 -1
  23. data/solarwinds_apm.gemspec +5 -3
  24. metadata +7 -15
  25. data/.github/CODEOWNERS +0 -1
  26. data/.github/ISSUE_TEMPLATE/bug-or-feature-request.md +0 -16
  27. data/.github/workflows/build_and_release_gem.yml +0 -108
  28. data/.github/workflows/build_for_packagecloud.yml +0 -59
  29. data/.github/workflows/docker-images.yml +0 -53
  30. data/.github/workflows/run_cpluplus_tests.yml +0 -73
  31. data/.github/workflows/run_tests.yml +0 -154
  32. data/.github/workflows/scripts/test_install.rb +0 -28
  33. data/.github/workflows/swig/swig-v4.0.2.tar.gz +0 -0
  34. data/.github/workflows/test_on_4_linux.yml +0 -109
  35. data/.github/workflows/test_on_ubuntu.yml +0 -107
  36. data/ext/oboe_metal/lib/liboboe-1.0-alpine-x86_64.so.0.0.0.sha256 +0 -1
  37. data/ext/oboe_metal/lib/liboboe-1.0-x86_64.so.0.0.0.sha256 +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c274381dffd0448ab7bd8075035f550bd7374161af063c8b2eb53b1170b71dc3
4
- data.tar.gz: af7a66a8329b4c357a1368793d58b2be3e5c6db2a2d56f73287645f668e0cd9b
3
+ metadata.gz: 8298bf959acf2663351b05afeb78ffa573c02107f9588bbc925a990e35675e4d
4
+ data.tar.gz: a67822c4554525b9894cdb578b48cf51de562ecd1b5ba353ed58f037ed88daf9
5
5
  SHA512:
6
- metadata.gz: d3ce5239fa623d41cb982578c51280caf4f1c7b7e152dfd97232f7e6fbc1d0faf0453ad30ba6e2e04fbc22a0f319f2c2569c0a1b53ce3f9a4e9f4924c16d8252
7
- data.tar.gz: 45b3d421e0acc5a90cdb9e61707d17e4739baf70d8ee916540b9e391c35ebd72c04b4493725358f94458c5ae0431e62f44fb5b087a08f86038bfd8b07d4ac398
6
+ metadata.gz: 9998cc5ed8152951dcfbe0a997ac952b89a32eb7fcbcfe3b3cf51a87231606d0471eddfa9d5a14be58780904681776a99b99abfa5dfbd4159d791d8ddaea556c
7
+ data.tar.gz: 661af15bb3b3a14a361f7e4f95b3367c2fbb459b19b9b7c1894480f9f85050c68fca6ce7029ed9cb7bb7fce82d8cd593c746989311ed8d68fbd4ba2c4a687c3e
data/.gitignore CHANGED
@@ -41,11 +41,18 @@ gemfiles/vendor*
41
41
  lib/libsolarwinds_apm.so
42
42
  vendor/
43
43
 
44
- # test
44
+ # test & test script
45
45
  tmp.rb
46
46
  apm.collector.st-ssp.solarwinds.com
47
47
  test/run_tests/.ruby_version_ubuntu
48
+ test/run_tests/.ruby_version_alpine
49
+ test/run_tests/.ruby_version_centos
50
+ test/run_tests/.ruby_version_ubuntu
51
+
52
+ redis-test.*
48
53
 
54
+ # compiling
55
+ ext/oboe_metal/verify
49
56
 
50
57
  # mac DS_Store
51
- .DS_Store
58
+ .DS_Store
data/CHANGELOG.md CHANGED
@@ -3,6 +3,33 @@ https://github.com/solarwindscloud/solarwinds-apm-ruby/releases
3
3
 
4
4
  Dates in this file are in the format MM/DD/YYYY.
5
5
 
6
+ # solarwinds_apm 5.1.6 (03/14/2023)
7
+
8
+ This release includes the following features:
9
+
10
+ * Update latest liboboe library (12.0.0)
11
+ * Remove centos as testing environments and include amazonlinux as alternatives of RHEL distro
12
+ * Include sanitize RemoteURL for kvs (p.s. RemoteHost is sanitized in library code)
13
+
14
+ Pushed to Rubygems:
15
+
16
+ https://rubygems.org/gems/solarwinds_apm/versions/5.1.5
17
+
18
+
19
+ # solarwinds_apm 5.1.4 (11/23/2022)
20
+
21
+ This release includes the following features:
22
+
23
+ * Update to the latest redis-rb gem (> 5.x)
24
+ * Update latest liboboe library (11.1.0)
25
+ * Start to support solarwinds-apm-ruby arm64/aarch64
26
+ * Init message update for swo/nh backends
27
+
28
+ Pushed to Rubygems:
29
+
30
+ https://rubygems.org/gems/solarwinds_apm/versions/5.1.4
31
+
32
+
6
33
  # solarwinds_apm 5.1.0 (09/15/2022)
7
34
 
8
35
  This release includes the following features:
data/README.md CHANGED
@@ -11,8 +11,9 @@ It requires an [Solarwinds] account to view metrics. Get yours,
11
11
 
12
12
  [![Gem Version](https://badge.fury.io/rb/solarwinds_apm.svg)](https://badge.fury.io/rb/solarwinds_apm)
13
13
 
14
- [![Run all Tests](https://github.com/appoptics/appoptics-apm-ruby/actions/workflows/run_tests.yml/badge.svg)](https://github.com/appoptics/appoptics-apm-ruby/actions/workflows/run_tests.yml)
15
- [![C++ Tests](https://github.com/appoptics/appoptics-apm-ruby/actions/workflows/run_cpluplus_tests.yml/badge.svg)](https://github.com/appoptics/appoptics-apm-ruby/actions/workflows/run_cpluplus_tests.yml)
14
+ [![Run All Tests](https://github.com/solarwindscloud/solarwinds-apm-ruby/actions/workflows/test_on_4_linux.yml/badge.svg)](https://github.com/solarwindscloud/solarwinds-apm-ruby/actions/workflows/test_on_4_linux.yml)
15
+
16
+ [![C++ Tests](https://github.com/solarwindscloud/solarwinds-apm-ruby/actions/workflows/run_cpluplus_tests.yml/badge.svg)](https://github.com/solarwindscloud/solarwinds-apm-ruby/actions/workflows/run_cpluplus_tests.yml)
16
17
 
17
18
  [comment]: <> ([![Maintainability]&#40;https://api.codeclimate.com/v1/badges/ac7f36241a23a3a82fc5/maintainability&#41;]&#40;https://codeclimate.com/github/appoptics/appoptics-apm-ruby/maintainability&#41;)
18
19
 
@@ -363,7 +364,7 @@ To make this simpler, we've included a few rake tasks to automate this process:
363
364
 
364
365
  ```bash
365
366
  rake clean # make sure no old stuff is around
366
- rake fetch_oboe_file_from_staging # download c-files from staging
367
+ rake fetch_oboe_file["stg"] # download c-files from staging
367
368
  rake compile # Build the gem's c extension
368
369
  ```
369
370
 
@@ -381,3 +382,4 @@ See the README in the test directory.
381
382
  Copyright (c) 2018 SolarWinds, LLC
382
383
 
383
384
  Released under the [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0)
385
+
@@ -27,26 +27,38 @@ ao_include = File.join(ext_dir, 'src')
27
27
 
28
28
  # Download the appropriate liboboe from Staging or Production
29
29
  version = File.read(File.join(ao_include, 'VERSION')).strip
30
- if ENV['OBOE_STAGING'].to_s.downcase == 'true'
30
+ if ENV['OBOE_DEV'].to_s.downcase == 'true'
31
+ ao_path = "https://solarwinds-apm-staging.s3.us-west-2.amazonaws.com/apm/c-lib/nightly"
32
+ puts 'Fetching c-lib from DEVELOPMENT Build'
33
+ elsif ENV['OBOE_STAGING'].to_s.downcase == 'true'
31
34
  ao_path = File.join('https://agent-binaries.global.st-ssp.solarwinds.com/apm/c-lib/', version)
32
35
  puts 'Fetching c-lib from STAGING'
33
36
  else
34
37
  ao_path = File.join('https://agent-binaries.cloud.solarwinds.com/apm/c-lib/', version)
35
38
  end
36
39
 
37
- ao_arch = 'x86_64'
40
+ ao_arch = "x86_64"
41
+ system_arch = `uname -m` # for mac, the command is `uname` # "Darwin\n"; try `uname -a`
42
+ case system_arch.gsub("\n","")
43
+ when "x86_64"
44
+ ao_arch = "x86_64"
45
+ when "aarch64"
46
+ ao_arch = "aarch64"
47
+ end
48
+
38
49
  if File.exist?('/etc/alpine-release')
39
50
  version = File.read('/etc/alpine-release').strip
40
51
 
52
+ tmp_ao_arch = ao_arch.clone
41
53
  ao_arch =
42
54
  if Gem::Version.new(version) < Gem::Version.new('3.9')
43
- 'alpine-libressl-x86_64'
55
+ "alpine-libressl-#{tmp_ao_arch}"
44
56
  else # openssl
45
- 'alpine-x86_64'
57
+ "alpine-#{tmp_ao_arch}"
46
58
  end
47
59
  end
48
60
 
49
- ao_clib = "liboboe-1.0-#{ao_arch}.so.0.0.0"
61
+ ao_clib = "liboboe-1.0-#{ao_arch}.so"
50
62
  ao_item = File.join(ao_path, ao_clib)
51
63
  ao_checksum_file = File.join(ao_lib_dir, "#{ao_clib}.sha256")
52
64
  clib = File.join(ao_lib_dir, ao_clib)
@@ -138,4 +150,4 @@ if success
138
150
  $stderr.puts '=================================================================='
139
151
  create_makefile('oboe_noop', 'noop')
140
152
  end
141
- end
153
+ end
@@ -24,7 +24,7 @@ ext_dir = File.expand_path(File.dirname(__FILE__))
24
24
  # the SolarWindsAPM libs.
25
25
  ao_lib_dir = File.join(ext_dir, 'lib')
26
26
  ao_path = '../../../oboe/factory-output'
27
- ao_clib = "liboboe-1.0-x86_64.so.0.0.0"
27
+ ao_clib = "liboboe-1.0-x86_64.so"
28
28
  ao_item = File.join(ao_path, ao_clib)
29
29
  clib = File.join(ao_lib_dir, ao_clib)
30
30
 
@@ -0,0 +1 @@
1
+ d9c280de4ab597fe7d3405a405c07f7e27ae4fb2cba7502f3893335bff119c3b
@@ -0,0 +1 @@
1
+ 7864bee37bcaeacef1c3ffae2db3ae2d163ef18ebb107fe11228122211e6ddb4
@@ -0,0 +1 @@
1
+ 48849897b168cde0de01b3c1355d0343e687cbec075f5970d88f166bd5182045
@@ -0,0 +1 @@
1
+ 139fd6c84d20b5f4b12931a0ecf6630b8b0cae14792d05000c29b8d35aa7332c
@@ -1,2 +1,2 @@
1
- 11.0.0
1
+ 12.0.0
2
2
 
@@ -750,7 +750,7 @@ int oboe_sample_is_enabled(oboe_settings_cfg_t *cfg);
750
750
  int oboe_tracing_decisions(oboe_tracing_decisions_in_t *in, oboe_tracing_decisions_out_t *out);
751
751
 
752
752
  /* Oboe configuration interface. */
753
-
753
+ #ifndef _WIN32
754
754
  /**
755
755
  * Check if the Oboe library is compatible with a given version.revision.
756
756
  *
@@ -762,7 +762,7 @@ int oboe_tracing_decisions(oboe_tracing_decisions_in_t *in, oboe_tracing_decisio
762
762
  * @return Non-zero if the Oboe library is considered compatible with the specified revision.
763
763
  */
764
764
  extern int oboe_config_check_version(int version, int revision);
765
-
765
+ #endif
766
766
  /**
767
767
  * Get the Oboe library version number.
768
768
  *
@@ -694,7 +694,11 @@ std::string Reporter::getType() {
694
694
  /////// Config ///////
695
695
 
696
696
  bool Config::checkVersion(int version, int revision) {
697
+ #ifndef _WIN32
697
698
  return (oboe_config_check_version(version, revision) != 0);
699
+ #else
700
+ return true;
701
+ #endif
698
702
  }
699
703
 
700
704
  std::string Config::getVersionString() {
@@ -29,10 +29,10 @@ module SolarWindsAPM
29
29
  say "-------------------"
30
30
  say ""
31
31
  say "SolarWindsAPM Installation Overview:"
32
- say "https://documentation.solarwinds.com/en/success_center/swaas/"
32
+ say "https://documentation.solarwinds.com/en/success_center/observability"
33
33
  say ""
34
34
  say "More information on instrumenting Ruby applications can be found here:"
35
- say "https://documentation.solarwinds.com/en/success_center/swaas/default.htm#cshid=app-add-ruby-agent"
35
+ say "https://documentation.solarwinds.com/en/success_center/observability/default.htm#cshid=config-ruby-agent"
36
36
  end
37
37
  # rubocop:enable Metrics/MethodLength
38
38
 
@@ -3,11 +3,11 @@
3
3
  # Copyright (c) 2019 SolarWinds, LLC.
4
4
  # All rights reserved.
5
5
 
6
- # SolarWindsAPM Configuration for the Ruby Agent aka solarwinds_apm gem
6
+ # SolarWindsAPM Configuration for the Ruby Library aka solarwinds_apm gem
7
7
  # https://cloud.solarwinds.com/
8
8
  #
9
- # More information on configuring the Ruby Agent can be found here:
10
- # https://documentation.solarwinds.com/en/success_center/swaas/default.htm#cshid=config-ruby-agent
9
+ # More information on configuring the Ruby Library can be found here:
10
+ # https://documentation.solarwinds.com/en/success_center/observability/default.htm#cshid=config-ruby-agent
11
11
  #
12
12
  # The initial settings in this file represent the defaults
13
13
 
@@ -46,9 +46,11 @@ if defined?(SolarWindsAPM::Config)
46
46
  # to SolarWinds is still encrypted using SSL/TLS.
47
47
  #
48
48
  # It is recommended to configure the proxy in this file or as SW_APM_PROXY
49
- # environment variable. However, the agent's underlying network library will
50
- # use a system-wide proxy defined in the environment variables grpc_proxy,
51
- # https_proxy or http_proxy if no SolarWindsAPM-specific configuration is set.
49
+ # environment variable. However, the underlying network library for the Ruby
50
+ # Instrumentation Library will use a system-wide proxy defined in the environment
51
+ # variables grpc_proxy, https_proxy or http_proxy if no SolarWindsAPM-specific
52
+ # configuration is set.
53
+ #
52
54
  # Please refer to gRPC environment variables for more information.
53
55
  #
54
56
  # SolarWindsAPM::Config[:http_proxy] = http://<proxyHost>:<proxyPort>
@@ -30,6 +30,7 @@ module SolarWindsAPM
30
30
  kvs[:RemoteURL] = url.split('?').first
31
31
  end
32
32
 
33
+ kvs[:RemoteURL] = SolarWindsAPM::Util.sanitize_uri(kvs[:RemoteURL])
33
34
  kvs[:HTTPMethod] = verb if verb
34
35
 
35
36
  kvs
@@ -23,6 +23,7 @@ module SolarWindsAPM
23
23
  kvs[:RemoteURL] = uri.to_s.split('?').first
24
24
  end
25
25
 
26
+ kvs[:RemoteURL] = SolarWindsAPM::Util.sanitize_uri(kvs[:RemoteURL])
26
27
  kvs[:HTTPMethod] = SolarWindsAPM::Util.upcase(method)
27
28
  kvs
28
29
  rescue => e
@@ -57,10 +57,9 @@ module SolarWindsAPM
57
57
  # KVOp (no KVKey)
58
58
 
59
59
  def self.included(klass)
60
- # We wrap two of the Redis methods to instrument
61
- # operations
62
- SolarWindsAPM::Util.method_alias(klass, :call, ::Redis::Client)
63
- SolarWindsAPM::Util.method_alias(klass, :call_pipeline, ::Redis::Client)
60
+ # call_pipelined is alias of call in redisclient middlewares
61
+ SolarWindsAPM::Util.method_alias(klass, :call, ::RedisClient)
62
+ SolarWindsAPM::Util.method_alias(klass, :call_pipelined, ::RedisClient)
64
63
  end
65
64
 
66
65
  # Given any Redis operation command array, this method
@@ -69,12 +68,14 @@ module SolarWindsAPM
69
68
  # @param command [Array] the Redis operation array
70
69
  # @param r [Return] the return value from the operation
71
70
  # @return [Hash] the Key/Values to report
72
- def extract_trace_details(command, r)
71
+ def extract_trace_details(command, r, config)
72
+ SolarWindsAPM.logger.debug "extract_trace_details command => #{command.inspect}"
73
73
  kvs = {}
74
74
  op = command.first
75
+ op = op.to_sym
75
76
 
76
77
  kvs[:KVOp] = command[0]
77
- kvs[:RemoteHost] = @options[:host]
78
+ kvs[:RemoteHost] = config.host
78
79
  unless NO_KEY_OPS.include?(op) || op == :del && command[1..-1].flatten.count > 1
79
80
  if command[1].is_a?(Array)
80
81
  kvs[:KVKey] = command[1].first
@@ -115,7 +116,7 @@ module SolarWindsAPM
115
116
  kvs[:KVHit] = r.nil? ? 0 : 1
116
117
 
117
118
  when :hdel, :hexists, :hget, :hset, :hsetnx
118
- kvs[:field] = command[2] unless command[2].is_a?(Array)
119
+ kvs[:field] = command[2] unless (command[2] && command[3]) # replace the idiom of command[2].is_a?(Array)
119
120
  if op == :hget
120
121
  kvs[:KVHit] = r.nil? ? 0 : 1
121
122
  end
@@ -136,7 +137,7 @@ module SolarWindsAPM
136
137
  else
137
138
  kvs[:Script] = command[2]
138
139
  end
139
- elsif command[1] == :exists
140
+ elsif command[1] == "exists"
140
141
  if command[2].is_a?(Array)
141
142
  kvs[:KVKey] = command[2].inspect
142
143
  else
@@ -166,6 +167,10 @@ module SolarWindsAPM
166
167
  end
167
168
  end # case op
168
169
  end # if KV_COLLECT_MAP[op]
170
+ # turn every string into number
171
+ # kvs.each do |k,v|
172
+ # kvs[k] = v.to_i if v.is_a(String)
173
+ # end
169
174
  rescue StandardError => e
170
175
  SolarWindsAPM.logger.debug "[solarwinds_apm/redis] Error collecting redis KVs: #{e.message}"
171
176
  SolarWindsAPM.logger.debug e.backtrace.join('\n')
@@ -178,16 +183,17 @@ module SolarWindsAPM
178
183
  #
179
184
  # @param pipeline [Redis::Pipeline] the Redis pipeline instance
180
185
  # @return [Hash] the Key/Values to report
181
- def extract_pipeline_details(pipeline)
186
+ def extract_pipeline_details(commands, config)
187
+ SolarWindsAPM.logger.debug "extract_pipeline_details command => #{commands.inspect}"
182
188
  kvs = {}
183
189
 
184
- kvs[:RemoteHost] = @options[:host]
190
+ kvs[:RemoteHost] = config.host
185
191
  kvs[:Backtrace] = SolarWindsAPM::API.backtrace if SolarWindsAPM::Config[:redis][:collect_backtraces]
186
192
 
187
- command_count = pipeline.commands.count
193
+ command_count = commands.count
188
194
  kvs[:KVOpCount] = command_count
189
195
 
190
- kvs[:KVOp] = if pipeline.commands.first == :multi
196
+ kvs[:KVOp] = if commands.first == :multi
191
197
  :multi
192
198
  else
193
199
  :pipeline
@@ -197,7 +203,7 @@ module SolarWindsAPM
197
203
  # of ops is reasonable
198
204
  if command_count < 12
199
205
  ops = []
200
- pipeline.commands.each do |c|
206
+ commands.each do |c|
201
207
  ops << c.first
202
208
  end
203
209
  kvs[:KVOps] = ops.join(', ')
@@ -210,17 +216,19 @@ module SolarWindsAPM
210
216
  end
211
217
 
212
218
  #
213
- # The wrapper method for Redis::Client.call. Here
219
+ # The wrapper method for RedisClient.call. Here
214
220
  # (when tracing) we capture KVs to report and pass
215
221
  # the call along
216
222
  #
217
- def call_with_sw_apm(command, &block)
223
+ def call_with_sw_apm(command, config, &block)
224
+ SolarWindsAPM.logger.debug "call_with_sw_apm command => #{command.inspect}"
218
225
  if SolarWindsAPM.tracing?
219
226
  SolarWindsAPM::API.log_entry(:redis, {})
220
227
 
221
228
  begin
222
- r = call_without_sw_apm(command, &block)
223
- report_kvs = extract_trace_details(command, r)
229
+ r = call_without_sw_apm(command, config, &block)
230
+ report_kvs = extract_trace_details(command, r, config)
231
+ SolarWindsAPM.logger.debug "call_with_sw_apm command => #{report_kvs.inspect}"
224
232
  r
225
233
  rescue StandardError => e
226
234
  SolarWindsAPM::API.log_exception(:redis, e)
@@ -230,26 +238,25 @@ module SolarWindsAPM
230
238
  end
231
239
 
232
240
  else
233
- call_without_sw_apm(command, &block)
241
+ call_without_sw_apm(command, config, &block)
234
242
  end
235
243
  end
236
244
 
237
245
  #
238
- # The wrapper method for Redis::Client.call_pipeline. Here
246
+ # The wrapper method for RedisClient.call_pipeline. Here
239
247
  # (when tracing) we capture KVs to report and pass the call along
240
- #
241
- def call_pipeline_with_sw_apm(pipeline)
248
+ # 5.0.0 + removed the deprecated pipelined and multi signature. Commands now MUST be called on the block argument, not the original redis instance
249
+ def call_pipelined_with_sw_apm(commands, config, &block)
250
+ SolarWindsAPM.logger.debug "call_pipelined_with_sw_apm command => #{commands.inspect}"
242
251
  if SolarWindsAPM.tracing?
243
252
  # Fall back to the raw tracing API so we can pass KVs
244
253
  # back on exit (a limitation of the SolarWindsAPM::API.trace
245
254
  # block method) This removes the need for an info
246
255
  # event to send additonal KVs
247
256
  SolarWindsAPM::API.log_entry(:redis, {})
248
-
249
- report_kvs = extract_pipeline_details(pipeline)
250
-
257
+ report_kvs = extract_pipeline_details(commands, config)
251
258
  begin
252
- call_pipeline_without_sw_apm(pipeline)
259
+ call_pipelined_without_sw_apm(commands, config, &block)
253
260
  rescue StandardError => e
254
261
  SolarWindsAPM::API.log_exception(:redis, e)
255
262
  raise
@@ -257,7 +264,7 @@ module SolarWindsAPM
257
264
  SolarWindsAPM::API.log_exit(:redis, report_kvs)
258
265
  end
259
266
  else
260
- call_pipeline_without_sw_apm(pipeline)
267
+ call_pipelined_without_sw_apm(commands, config, &block)
261
268
  end
262
269
  end
263
270
  end
@@ -266,8 +273,8 @@ module SolarWindsAPM
266
273
  end
267
274
 
268
275
  if SolarWindsAPM::Config[:redis][:enabled]
269
- if defined?(Redis) && Gem::Version.new(Redis::VERSION) >= Gem::Version.new('3.0.0')
270
- SolarWindsAPM.logger.info '[solarwinds_apm/loading] Instrumenting redis' if SolarWindsAPM::Config[:verbose]
271
- SolarWindsAPM::Util.send_include(Redis::Client, SolarWindsAPM::Inst::Redis::Client)
276
+ if defined?(::RedisClient)
277
+ SolarWindsAPM.logger.info "[solarwinds_apm/loading] Instrumenting redis through RedisClient #{RedisClient::VERSION}" if SolarWindsAPM::Config[:verbose]
278
+ ::RedisClient.register(SolarWindsAPM::Inst::Redis::Client)
272
279
  end
273
280
  end