sidekiq-instrumentation 1.2.0.pre2 → 1.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: da552b8f001443c2b2b6829a7ed1143bda6748daf470764e4f211199333dd348
4
- data.tar.gz: 8031b06930f50e83f05c4cf2c75c8330f8fdfe3cb122af4398df7af5f7d94a59
3
+ metadata.gz: efa08e01af2293de61c9273900ad7f1fce8202b5ab7a7f3f1c36a53283bbeeaa
4
+ data.tar.gz: 872499d82c73764390ce913edbadaf6480c40b5d0baeb8c298644c0a4550d8f5
5
5
  SHA512:
6
- metadata.gz: c94986c2e8cc309cf59c724ef209c57e810113f064c5ded4b63125c25430fbb9f49d7f0dded837bb939def0193b94f57069fdddf675b724dec8b22aa9eaa824d
7
- data.tar.gz: 9514d1b79555b429d72d0ac904461c9bd971c575280401bee66638346812aa4583c0fa714a15e99399e7dc989315cb23c115e05c25c405bf45cc337376c02003
6
+ metadata.gz: 030a00859186218ca81ebb9072f700f87fe77d0a7b03b0d4d7c702c5a62168848d6a9fb0153653082be93cdc55dfa903dede74062f4266d09508316107ac168d
7
+ data.tar.gz: df571ab4bba110d64fd267819c3eaecc6d30b02337e94433cacbdbcf8f89ddd722254bc8c9917a064494a21a3e0d23455d20830324f26077ed5379e1bbf8df0e
@@ -1,10 +1,17 @@
1
1
 
2
2
  Changelog
3
3
  =========
4
- ## 1.2.0.pre2 05/28/2020
4
+
5
+ ## 1.2.2 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
5
12
  * Ignore active scope in consumers
6
13
 
7
14
  ## 1.1.0 05/27/2020
8
15
  * Set up build pipeline with circleci and gem-publisher
9
16
  * Fixed linting issues
10
- * Renamed gem to `sidekiq-instrumentation`
17
+ * Renamed gem to `sidekiq-instrumentation`
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sidekiq-instrumentation (1.2.0.pre2)
4
+ sidekiq-instrumentation (1.2.2)
5
5
  opentracing (>= 0.3.1)
6
6
 
7
7
  GEM
@@ -90,4 +90,4 @@ DEPENDENCIES
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,36 +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
- ignore_active_scope: true,
36
- 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
37
35
  end
36
+ # rubocop:enable Metrics/MethodLength
37
+
38
+ private
38
39
 
39
40
  def tag_errors(span, error)
40
41
  span.set_tag("error", true)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sidekiq
4
4
  module Tracer
5
- VERSION = "1.2.0.pre2"
5
+ VERSION = "1.2.2"
6
6
  end
7
7
  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.2.0.pre2
4
+ version: 1.2.2
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-06-09 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
@@ -204,9 +204,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
204
204
  version: '0'
205
205
  required_rubygems_version: !ruby/object:Gem::Requirement
206
206
  requirements:
207
- - - ">"
207
+ - - ">="
208
208
  - !ruby/object:Gem::Version
209
- version: 1.3.1
209
+ version: '0'
210
210
  requirements: []
211
211
  rubygems_version: 3.1.2
212
212
  signing_key: