opentelemetry-instrumentation-que 0.4.0 → 0.5.1

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: '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: