opentelemetry-instrumentation-que 0.4.0 → 0.5.1

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: '05301928e28e51d2dad8aa8fb1467eccf37202cd8cf4e19e2283553b9098906c'
4
- data.tar.gz: 90681eedfca0e3a9cd460ad90e45ded12aee593fed5a0b65eb3b98ba2cc3e741
3
+ metadata.gz: 8c38bc717ae44997443d4fa9013147f40f9003cac7006fb7971660d8ff5f451d
4
+ data.tar.gz: d2343c6ff9279e7f1929cf3e7c1cc0a6998a97474745ddc5efb77676ff73c07e
5
5
  SHA512:
6
- metadata.gz: eb9082dd3fc59fdb5242dcc16aedbb7662fb1f85dd912d12f662fddd0943d9256949da7681c269e2d799afe5d65878ba013a8f7735db037160744f44c94544f2
7
- data.tar.gz: fe373cd0c5d51996331ba158d0f5b3f2d92ffd0a9f0fe421c120524e5614c63e1256b3ded34fb538451fc58a92bea04ecd5642fba94106c7b330e02eb0d352d7
6
+ metadata.gz: 2217e4afe351dd0acf6437bbe21e0d2fd0583f4b74f90e38fc0c9e1582a45443dadd98b57ad73ab05a4742bf2c46f94635b13abf131194fff2e4196e60ae82c4
7
+ data.tar.gz: 36d591016e58c7d7973b5f1c206e85962914134198a857e55873c27756086ff093ec73748187f4fbd8f012ba7de00af3f1a8d79d425e3af6465041ef5cc0536e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Release History: opentelemetry-instrumentation-que
2
2
 
3
+ ### v0.5.1 / 2023-01-14
4
+
5
+ * FIXED: Remove `job_options` when using `bulk_enqueue`
6
+ * DOCS: Fix gem homepage
7
+ * DOCS: More gem documentation fixes
8
+
9
+ ### v0.5.0 / 2022-10-28
10
+
11
+ * ADDED: Add support for `job_options` argument
12
+
3
13
  ### v0.4.0 / 2022-06-09
4
14
 
5
15
  * Upgrading Base dependency version
data/README.md CHANGED
@@ -65,6 +65,28 @@ The `opentelemetry-instrumentation-que` gem source is [on github][repo-github],
65
65
 
66
66
  The OpenTelemetry Ruby gems are maintained by the OpenTelemetry-Ruby special interest group (SIG). You can get involved by joining us in [GitHub Discussions][discussions-url] or attending our weekly meeting. See the [meeting calendar][community-meetings] for dates and times. For more information on this and other language SIGs, see the OpenTelemetry [community page][ruby-sig].
67
67
 
68
+ ## Testing the gem locally
69
+
70
+ To install test dependencies run:
71
+
72
+ ```
73
+ bundle exec appraisal
74
+ ```
75
+
76
+ To run tests on all appraised Que versions, run:
77
+
78
+ ```
79
+ bundle exec appraisal rake test
80
+ ```
81
+
82
+ To run tests with a specific Que version, run:
83
+
84
+ ```
85
+ bundle exec appraisal [que-version] rake test
86
+ ```
87
+
88
+ All appraised Que versions can be found in the [Appraisals][appraisal-file] file.
89
+
68
90
  ## License
69
91
 
70
92
  The `opentelemetry-instrumentation-que` gem is distributed under the Apache 2.0 license. See [LICENSE][license-github] for more information.
@@ -72,7 +94,8 @@ The `opentelemetry-instrumentation-que` gem is distributed under the Apache 2.0
72
94
  [que-home]: https://github.com/que-rb/que
73
95
  [bundler-home]: https://bundler.io
74
96
  [repo-github]: https://github.com/open-telemetry/opentelemetry-ruby
75
- [license-github]: https://github.com/open-telemetry/opentelemetry-ruby/blob/main/LICENSE
97
+ [license-github]: https://github.com/open-telemetry/opentelemetry-ruby-contrib/blob/main/LICENSE
76
98
  [ruby-sig]: https://github.com/open-telemetry/community#ruby-sig
77
99
  [community-meetings]: https://github.com/open-telemetry/community#community-meetings
78
100
  [discussions-url]: https://github.com/open-telemetry/opentelemetry-ruby/discussions
101
+ [appraisal-file]: https://github.com/open-telemetry/opentelemetry-ruby-contrib/blob/main/instrumentation/que/Appraisals
@@ -10,7 +10,7 @@ module OpenTelemetry
10
10
  # The Instrumentation class contains logic to detect and install the Que
11
11
  # instrumentation
12
12
  class Instrumentation < OpenTelemetry::Instrumentation::Base
13
- MINIMUM_VERSION = Gem::Version.new('1.0.0.beta4')
13
+ MINIMUM_VERSION = Gem::Version.new('1.2.0')
14
14
 
15
15
  install do |_|
16
16
  require_dependencies
@@ -10,7 +10,7 @@ module OpenTelemetry
10
10
  module Middlewares
11
11
  # Server middleware to trace Que jobs
12
12
  class ServerMiddleware
13
- def self.call(job, &block) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
13
+ def self.call(job, &block) # rubocop:disable Metrics/MethodLength
14
14
  job_class = job_class(job)
15
15
  span_name = "#{job_class} process"
16
16
  attributes = attributes_before_job_completion(job, job_class)
@@ -74,9 +74,7 @@ module OpenTelemetry
74
74
  # tags is an array looking something like ["tag1", "traceparent:..."]
75
75
  def self.extract_context_from_tags(tags)
76
76
  # Convert tags into Hash (ignoring elements that cannot be converted)
77
- tags_hash = Hash[
78
- tags.map { |value| value.split(':', 2) }.select { |value| value.size == 2 }
79
- ]
77
+ tags_hash = tags.map { |value| value.split(':', 2) }.select { |value| value.size == 2 }.to_h
80
78
  OpenTelemetry.propagation.extract(tags_hash)
81
79
  end
82
80
 
@@ -18,7 +18,7 @@ module OpenTelemetry
18
18
 
19
19
  # Module to prepend to Que singleton class
20
20
  module ClassMethods
21
- def enqueue(*args, tags: nil, **arg_opts)
21
+ def enqueue(*args, job_options: {}, **arg_opts)
22
22
  tracer = Que::Instrumentation.instance.tracer
23
23
  otel_config = Que::Instrumentation.instance.config
24
24
 
@@ -37,31 +37,45 @@ module OpenTelemetry
37
37
  # The second option (which we are using here) is to use tags.
38
38
  # They also are not meant for tracing information but they are
39
39
  # much safer to use than modifying the payload.
40
+ tags = job_options[:tags]
40
41
  if otel_config[:propagation_style] != :none
41
42
  tags ||= []
42
43
  OpenTelemetry.propagation.inject(tags, setter: TagSetter)
43
44
  end
44
45
 
45
- job = super(*args, tags: tags, **arg_opts)
46
+ # In Que version 2.1.0 `bulk_enqueue` was introduced and in order
47
+ # for it to work, we must pass `job_options` to `bulk_enqueue` instead of enqueue.
48
+ if gem_version >= Gem::Version.new('2.1.0') && Thread.current[:que_jobs_to_bulk_insert]
49
+ Thread.current[:que_jobs_to_bulk_insert][:job_options] = job_options.merge(tags: tags)
50
+ job = super(*args, **arg_opts)
51
+ job_attrs = Thread.current[:que_jobs_to_bulk_insert][:jobs_attrs].last
52
+ else
53
+ job = super(*args, job_options: job_options.merge(tags: tags), **arg_opts)
54
+ job_attrs = job.que_attrs
55
+ end
46
56
 
47
- span.name = "#{job.que_attrs[:job_class]} send"
48
- span.add_attributes(QueJob.job_attributes(job))
57
+ span.name = "#{job_attrs[:job_class]} send"
58
+ span.add_attributes(QueJob.job_attributes(job_attrs))
49
59
 
50
60
  job
51
61
  end
52
62
  end
63
+
64
+ def gem_version
65
+ @gem_version ||= Gem.loaded_specs['que'].version
66
+ end
53
67
  end
54
68
 
55
- def self.job_attributes(job)
69
+ def self.job_attributes(job_attrs)
56
70
  attributes = {
57
71
  'messaging.system' => 'que',
58
72
  'messaging.destination_kind' => 'queue',
59
73
  'messaging.operation' => 'send',
60
- 'messaging.destination' => job.que_attrs[:queue] || 'default',
61
- 'messaging.que.job_class' => job.que_attrs[:job_class],
62
- 'messaging.que.priority' => job.que_attrs[:priority] || 100
74
+ 'messaging.destination' => job_attrs[:queue] || 'default',
75
+ 'messaging.que.job_class' => job_attrs[:job_class],
76
+ 'messaging.que.priority' => job_attrs[:priority] || 100
63
77
  }
64
- attributes['messaging.message_id'] = job.que_attrs[:id] if job.que_attrs[:id]
78
+ attributes['messaging.message_id'] = job_attrs[:id] if job_attrs[:id]
65
79
  attributes
66
80
  end
67
81
  end
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Que
10
- VERSION = '0.4.0'
10
+ VERSION = '0.5.1'
11
11
  end
12
12
  end
13
13
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-instrumentation-que
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-09 00:00:00.000000000 Z
11
+ date: 2023-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -70,16 +70,16 @@ dependencies:
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.17'
75
+ version: '2.4'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.17'
82
+ version: '2.4'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: minitest
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 1.0.0.beta4
159
+ version: 1.2.0
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 1.0.0.beta4
166
+ version: 1.2.0
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rake
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: 0.73.0
187
+ version: 1.41.1
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: 0.73.0
194
+ version: 1.41.1
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: simplecov
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -254,14 +254,14 @@ files:
254
254
  - lib/opentelemetry/instrumentation/que/patches/que_job.rb
255
255
  - lib/opentelemetry/instrumentation/que/tag_setter.rb
256
256
  - lib/opentelemetry/instrumentation/que/version.rb
257
- homepage: https://github.com/open-telemetry/opentelemetry-ruby
257
+ homepage: https://github.com/open-telemetry/opentelemetry-ruby-contrib
258
258
  licenses:
259
259
  - Apache-2.0
260
260
  metadata:
261
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-instrumentation-que/v0.4.0/file.CHANGELOG.html
262
- source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/instrumentation/que
263
- bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
264
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-instrumentation-que/v0.4.0
261
+ changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-que/0.5.1/file/CHANGELOG.md
262
+ source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation/que
263
+ bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
264
+ documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-que/0.5.1
265
265
  post_install_message:
266
266
  rdoc_options: []
267
267
  require_paths: