sidekiq-instrumentation 1.1.0 → 1.2.2.ejacobs2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 25b3b21f6becf08c671e2ea732966e440cb6069a55b4a686998e9bc35b31e7b6
4
- data.tar.gz: 5f123ced7f7e8abea18048085e83dfc932fdb779712d455d1c0b6d53c4c9c935
3
+ metadata.gz: d6641e2c0b30c4ddfd7647986e5608ff11499a87ac9923653c84fbad1c846f3f
4
+ data.tar.gz: ad72033e048cb3b70307854c938d98922b612f09f30ba945a1503ca099f92ccc
5
5
  SHA512:
6
- metadata.gz: 2628bc838cd6eb2aaf60d6745adcdf40d80c48ea3ad789b498aba02da57b89839af1388eccdaa7dbfd4e40bef223a3f12b1edd5ded3e2fbdd8a7be971b6e8c92
7
- data.tar.gz: f2aa11692bd31b2cc0d168dc64447c999ea063f55e838cc52649d3ef5ded5953c67b872312d4073248ea49d5c89e5bbd127df96c75b96db7b8e5a524e278cb57
6
+ metadata.gz: 93484dbfcaada95dbeda85518a74ec325fe6c7eeeeea3c153dfb3a4047c27abfcf93ec14dd758bcd6133096c9d8056ba636460f8a4453b59b0840b185313a2af
7
+ data.tar.gz: 0ae4b86fbb017feefa41ac53fef28896edeec0e6dc88d3a13441f1f2f96717e9e6d4f66f502ed4cf6ff4d5f68e22cb2f535df20f5d50562c049e6ef71ddf3f07
@@ -31,5 +31,5 @@
31
31
  Exclude:
32
32
  - "./**/*_spec*.rb"
33
33
 
34
- Rails/ApplicationRecord:
34
+ Rails:
35
35
  Enabled: false
@@ -2,7 +2,16 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ ## 1.2.2.ejacobs2 09/08/2020
6
+ * Add optional after_trace hook to ClientMiddleware
7
+
8
+ ## 1.2.1 07/09/2020
9
+ * Ensure child spans are nested under the root Sidekiq span in the trace
10
+
11
+ ## 1.2.0 05/28/2020
12
+ * Ignore active scope in consumers
13
+
5
14
  ## 1.1.0 05/27/2020
6
15
  * Set up build pipeline with circleci and gem-publisher
7
16
  * Fixed linting issues
8
- * Renamed gem to `sidekiq-instrumentation`
17
+ * Renamed gem to `sidekiq-instrumentation`
@@ -1,9 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sidekiq-instrumentation (1.1.0)
4
+ sidekiq-instrumentation (1.2.2.ejacobs2)
5
5
  opentracing (>= 0.3.1)
6
- sidekiq
7
6
 
8
7
  GEM
9
8
  remote: https://artifacts.dox.support/repository/gems/
@@ -85,9 +84,10 @@ DEPENDENCIES
85
84
  rspec
86
85
  rspec_junit_formatter
87
86
  sdoc
87
+ sidekiq
88
88
  sidekiq-instrumentation!
89
89
  test-tracer (~> 1.0, >= 1.2.1)
90
90
  tracing-matchers (~> 1.0, >= 1.3.0)
91
91
 
92
92
  BUNDLED WITH
93
- 1.17.2
93
+ 1.17.3
@@ -11,9 +11,9 @@ require "sidekiq/tracer/server_middleware"
11
11
  module Sidekiq
12
12
  module Tracer
13
13
  class << self
14
- def instrument(tracer: OpenTracing.global_tracer, active_span: nil)
14
+ def instrument(tracer: OpenTracing.global_tracer, active_span: nil, after_trace: nil)
15
15
  instrument_client(tracer: tracer, active_span: active_span)
16
- instrument_server(tracer: tracer, active_span: active_span)
16
+ instrument_server(tracer: tracer, active_span: active_span, after_trace: after_trace)
17
17
  end
18
18
 
19
19
  def instrument_client(tracer: OpenTracing.global_tracer, active_span: nil)
@@ -22,23 +22,23 @@ module Sidekiq
22
22
  end
23
23
  end
24
24
 
25
- def instrument_server(tracer: OpenTracing.global_tracer, active_span: nil)
25
+ def instrument_server(tracer: OpenTracing.global_tracer, active_span: nil, after_trace: nil)
26
26
  Sidekiq.configure_server do |config|
27
27
  config.client_middleware { |chain| add_client_middleware(chain, tracer, active_span) }
28
- config.server_middleware { |chain| add_server_middleware(chain, tracer, active_span) }
28
+ config.server_middleware { |chain| add_server_middleware(chain, tracer, active_span, after_trace) }
29
29
  end
30
30
 
31
31
  return unless defined?(Sidekiq::Testing)
32
32
 
33
- Sidekiq::Testing.server_middleware { |chain| add_server_middleware(chain, tracer, active_span) }
33
+ Sidekiq::Testing.server_middleware { |chain| add_server_middleware(chain, tracer, active_span, after_trace) }
34
34
  end
35
35
 
36
36
  def add_client_middleware(chain, tracer, active_span)
37
37
  chain.add Sidekiq::Tracer::ClientMiddleware, tracer: tracer, active_span: active_span
38
38
  end
39
39
 
40
- def add_server_middleware(chain, tracer, active_span)
41
- chain.add Sidekiq::Tracer::ServerMiddleware, tracer: tracer, active_span: active_span
40
+ def add_server_middleware(chain, tracer, active_span, after_trace)
41
+ chain.add Sidekiq::Tracer::ServerMiddleware, tracer: tracer, active_span: active_span, after_trace: after_trace
42
42
  end
43
43
  end
44
44
  end
@@ -5,35 +5,37 @@ module Sidekiq
5
5
  class ServerMiddleware
6
6
  include Commons
7
7
 
8
- attr_reader :tracer, :active_span
8
+ attr_reader :tracer, :active_span, :after_trace
9
9
 
10
- def initialize(tracer:, active_span:)
10
+ def initialize(tracer:, active_span:, after_trace:)
11
11
  @tracer = tracer
12
12
  @active_span = active_span
13
+ @after_trace = after_trace
13
14
  end
14
15
 
16
+ # rubocop:disable Metrics/MethodLength
15
17
  def call(_worker, job, _queue)
16
- span = build_span(job)
17
-
18
- yield
19
- rescue StandardError => e
20
- tag_errors(span, e) if span
21
- raise
22
- ensure
23
- span&.finish
24
- end
25
-
26
- private
27
-
28
- def build_span(job)
29
18
  parent_span_context = extract(job)
30
19
 
31
20
  follows_from = OpenTracing::Reference.follows_from(parent_span_context)
32
21
 
33
- tracer.start_span(operation_name(job),
34
- references: [follows_from],
35
- tags: tags(job, "consumer"))
22
+ tracer.start_active_span(operation_name(job),
23
+ references: [follows_from],
24
+ ignore_active_scope: true,
25
+ tags: tags(job, "consumer")) do |scope|
26
+ begin
27
+ yield
28
+ rescue StandardError => e
29
+ tag_errors(scope.span, e) if scope.span
30
+ raise
31
+ ensure
32
+ after_trace&.call(scope.span) if scope.span
33
+ end
34
+ end
36
35
  end
36
+ # rubocop:enable Metrics/MethodLength
37
+
38
+ private
37
39
 
38
40
  def tag_errors(span, error)
39
41
  span.set_tag("error", true)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sidekiq
4
4
  module Tracer
5
- VERSION = "1.1.0"
5
+ VERSION = "1.2.2.ejacobs2"
6
6
  end
7
7
  end
@@ -23,7 +23,6 @@ Gem::Specification.new do |spec|
23
23
  spec.require_paths = ["lib"]
24
24
 
25
25
  spec.add_dependency "opentracing", ">= 0.3.1"
26
- spec.add_dependency "sidekiq"
27
26
 
28
27
  spec.add_development_dependency "bundler", "~> 1.17"
29
28
  spec.add_development_dependency "dox-style"
@@ -31,6 +30,7 @@ Gem::Specification.new do |spec|
31
30
  spec.add_development_dependency "rspec"
32
31
  spec.add_development_dependency "rspec_junit_formatter"
33
32
  spec.add_development_dependency "sdoc"
33
+ spec.add_development_dependency "sidekiq"
34
34
  spec.add_development_dependency "test-tracer", "~> 1.0", ">= 1.2.1"
35
35
  spec.add_development_dependency "tracing-matchers", "~> 1.0", ">= 1.3.0"
36
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-instrumentation
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.2.ejacobs2
5
5
  platform: ruby
6
6
  authors:
7
7
  - iaintshine
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-05-27 00:00:00.000000000 Z
12
+ date: 2020-09-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: opentracing
@@ -25,20 +25,6 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: 0.3.1
28
- - !ruby/object:Gem::Dependency
29
- name: sidekiq
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: '0'
35
- type: :runtime
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
28
  - !ruby/object:Gem::Dependency
43
29
  name: bundler
44
30
  requirement: !ruby/object:Gem::Requirement
@@ -123,6 +109,20 @@ dependencies:
123
109
  - - ">="
124
110
  - !ruby/object:Gem::Version
125
111
  version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: sidekiq
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: test-tracer
128
128
  requirement: !ruby/object:Gem::Requirement
@@ -174,7 +174,6 @@ files:
174
174
  - ".gitignore"
175
175
  - ".rspec"
176
176
  - ".rubocop.yml"
177
- - ".ruby-version"
178
177
  - ".travis.yml"
179
178
  - CHANGELOG.md
180
179
  - CODE_OF_CONDUCT.md
@@ -189,7 +188,6 @@ files:
189
188
  - lib/sidekiq/tracer/constants.rb
190
189
  - lib/sidekiq/tracer/server_middleware.rb
191
190
  - lib/sidekiq/tracer/version.rb
192
- - lib/sidekiq_instrumentation.rb
193
191
  - sidekiq-instrumentation.gemspec
194
192
  homepage: https://github.com/doximity/ruby-sidekiq-tracer
195
193
  licenses:
@@ -206,9 +204,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
206
204
  version: '0'
207
205
  required_rubygems_version: !ruby/object:Gem::Requirement
208
206
  requirements:
209
- - - ">="
207
+ - - ">"
210
208
  - !ruby/object:Gem::Version
211
- version: '0'
209
+ version: 1.3.1
212
210
  requirements: []
213
211
  rubygems_version: 3.1.2
214
212
  signing_key:
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "sidekiq/tracer"