opentelemetry-sdk 0.8.0 → 0.9.0

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: 735ead8ec769c6a55c3e3393341366ebd4a7e83bd4bdd8a71ca474b470ab0566
4
- data.tar.gz: 862d5aa24d401a6c215d852a4c601a58d858d452c9f3679cd33d71094de2eeb4
3
+ metadata.gz: 92bb8c4a7792c37eb367fc10a3093b3fe27339592bc8689cdac308f21ba8ffa7
4
+ data.tar.gz: 2a0b6df150bbf2cb0987d1d4e5aa29fb37323bb740786ee2171e3ae037ff60ac
5
5
  SHA512:
6
- metadata.gz: 8cb9becaedfbf07126a03c68f1968c988d499042c587a4d4e1100048660d2fa699b809c7d687eb90700d63ecceda4b31172e2efd25ea147abb0ccd7afbe9b476
7
- data.tar.gz: 718f2a0a972e3a3f60beea5f4d3d8bff47f943fc24ecc2726182449f1cb3e958122e40971f5db7b96771b9380cd79b93f0ef7e3480d4319b5466d1c7ce3e0287
6
+ metadata.gz: 59acf74f4d8cd4d4b1b7206690b6b0ddff389e98a76d151eb3cc08b97168af5c876a67a537123d81f2a3c7e65e3d52aea07f502bff02b7f8736863c8d299587e
7
+ data.tar.gz: b99ebe6b214387d35d530d01d154f017cb5ae9ea11f6922773c12d1b2fa2807a1051d5d3f021816ad6970d152794ccb1b2e9af37c46b5fde768d4c8574d8833b
@@ -1,5 +1,17 @@
1
1
  # Release History: opentelemetry-sdk
2
2
 
3
+ ### v0.9.0 / 2020-11-27
4
+
5
+ * BREAKING CHANGE: Pass full Context to samplers
6
+ * BREAKING CHANGE: Add timeout for force_flush and shutdown
7
+
8
+ * ADDED: Add OTEL_RUBY_BSP_START_THREAD_ON_BOOT env var
9
+ * ADDED: Add timeout for force_flush and shutdown
10
+ * FIXED: Signal at batch_size
11
+ * FIXED: SDK Span.recording? after finish
12
+ * FIXED: Pass full Context to samplers
13
+ * DOCS: Add documentation on usage scenarios for span processors
14
+
3
15
  ### v0.8.0 / 2020-10-27
4
16
 
5
17
  * BREAKING CHANGE: Move context/span methods to Trace module
@@ -5,6 +5,7 @@
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
7
7
  require 'opentelemetry'
8
+ require 'opentelemetry/common'
8
9
 
9
10
  # OpenTelemetry is an open source observability framework, providing a
10
11
  # general-purpose API, SDK, and related tools required for the instrumentation
@@ -13,6 +13,9 @@ module OpenTelemetry
13
13
  # Implementation of the duck type SpanProcessor that batches spans
14
14
  # exported by the SDK then pushes them to the exporter pipeline.
15
15
  #
16
+ # Typically, the BatchSpanProcessor will be more suitable for
17
+ # production environments than the SimpleSpanProcessor.
18
+ #
16
19
  # All spans reported by the SDK implementation are first added to a
17
20
  # synchronized queue (with a {max_queue_size} maximum size, after the
18
21
  # size is reached spans are dropped) and exported every
@@ -22,7 +25,7 @@ module OpenTelemetry
22
25
  # If the queue gets half full a preemptive notification is sent to the
23
26
  # worker thread that exports the spans to wake up and start a new
24
27
  # export cycle.
25
- class BatchSpanProcessor
28
+ class BatchSpanProcessor # rubocop:disable Metrics/ClassLength
26
29
  # Returns a new instance of the {BatchSpanProcessor}.
27
30
  #
28
31
  # @param [SpanExporter] exporter
@@ -44,12 +47,14 @@ module OpenTelemetry
44
47
  exporter_timeout_millis: Float(ENV.fetch('OTEL_BSP_EXPORT_TIMEOUT_MILLIS', 30_000)),
45
48
  schedule_delay_millis: Float(ENV.fetch('OTEL_BSP_SCHEDULE_DELAY_MILLIS', 5_000)),
46
49
  max_queue_size: Integer(ENV.fetch('OTEL_BSP_MAX_QUEUE_SIZE', 2048)),
47
- max_export_batch_size: Integer(ENV.fetch('OTEL_BSP_MAX_EXPORT_BATCH_SIZE', 512)))
50
+ max_export_batch_size: Integer(ENV.fetch('OTEL_BSP_MAX_EXPORT_BATCH_SIZE', 512)),
51
+ start_thread_on_boot: String(ENV['OTEL_RUBY_BSP_START_THREAD_ON_BOOT']) !~ /false/i)
48
52
  raise ArgumentError if max_export_batch_size > max_queue_size
49
53
 
50
54
  @exporter = exporter
51
55
  @exporter_timeout_seconds = exporter_timeout_millis / 1000.0
52
56
  @mutex = Mutex.new
57
+ @export_mutex = Mutex.new
53
58
  @condition = ConditionVariable.new
54
59
  @keep_running = true
55
60
  @delay_seconds = schedule_delay_millis / 1000.0
@@ -58,15 +63,13 @@ module OpenTelemetry
58
63
  @spans = []
59
64
  @pid = nil
60
65
  @thread = nil
61
- reset_on_fork
66
+ reset_on_fork(restart_thread: start_thread_on_boot)
62
67
  end
63
68
 
64
- # does nothing for this processor
65
- def on_start(span, parent_context)
66
- # noop
67
- end
69
+ # Does nothing for this processor
70
+ def on_start(_span, _parent_context); end
68
71
 
69
- # adds a span to the batcher, threadsafe may block on lock
72
+ # Adds a span to the batch. Thread-safe; may block on lock.
70
73
  def on_finish(span) # rubocop:disable Metrics/AbcSize
71
74
  return unless span.context.trace_flags.sampled?
72
75
 
@@ -75,11 +78,10 @@ module OpenTelemetry
75
78
  n = spans.size + 1 - max_queue_size
76
79
  spans.shift(n) if n.positive?
77
80
  spans << span
78
- @condition.signal if spans.size > max_queue_size / 2
81
+ @condition.signal if spans.size > batch_size
79
82
  end
80
83
  end
81
84
 
82
- # TODO: test this explicitly.
83
85
  # Export all ended spans to the configured `Exporter` that have not yet
84
86
  # been exported.
85
87
  #
@@ -88,35 +90,52 @@ module OpenTelemetry
88
90
  # the process after an invocation, but before the `Processor` exports
89
91
  # the completed spans.
90
92
  #
93
+ # @param [optional Numeric] timeout An optional timeout in seconds.
91
94
  # @return [Integer] SUCCESS if no error occurred, FAILURE if a
92
95
  # non-specific failure occurred, TIMEOUT if a timeout occurred.
93
- def force_flush
96
+ def force_flush(timeout: nil) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
97
+ start_time = Time.now
94
98
  snapshot = lock do
95
99
  reset_on_fork(restart_thread: false) if @keep_running
96
100
  spans.shift(spans.size)
97
101
  end
98
102
  until snapshot.empty?
103
+ remaining_timeout = OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time)
104
+ return TIMEOUT if remaining_timeout&.zero?
105
+
99
106
  batch = snapshot.shift(@batch_size).map!(&:to_span_data)
100
- result_code = @exporter.export(batch)
101
- report_result(result_code, batch)
107
+ result_code = export_batch(batch, timeout: remaining_timeout)
108
+ return result_code unless result_code == SUCCESS
102
109
  end
110
+
103
111
  SUCCESS
112
+ ensure
113
+ # Unshift the remaining spans if we timed out. We drop excess spans from
114
+ # the snapshot because they're older than any spans in the spans buffer.
115
+ lock do
116
+ n = spans.size + snapshot.size - max_queue_size
117
+ snapshot.shift(n) if n.positive?
118
+ spans.unshift(snapshot) unless snapshot.empty?
119
+ @condition.signal if spans.size > max_queue_size / 2
120
+ end
104
121
  end
105
122
 
106
- # shuts the consumer thread down and flushes the current accumulated buffer
107
- # will block until the thread is finished
123
+ # Shuts the consumer thread down and flushes the current accumulated buffer
124
+ # will block until the thread is finished.
108
125
  #
126
+ # @param [optional Numeric] timeout An optional timeout in seconds.
109
127
  # @return [Integer] SUCCESS if no error occurred, FAILURE if a
110
128
  # non-specific failure occurred, TIMEOUT if a timeout occurred.
111
- def shutdown
129
+ def shutdown(timeout: nil)
130
+ start_time = Time.now
112
131
  lock do
113
132
  @keep_running = false
114
133
  @condition.signal
115
134
  end
116
135
 
117
- @thread.join
118
- force_flush
119
- @exporter.shutdown
136
+ @thread.join(timeout)
137
+ force_flush(timeout: OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time))
138
+ @exporter.shutdown(timeout: OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time))
120
139
  end
121
140
 
122
141
  private
@@ -147,15 +166,10 @@ module OpenTelemetry
147
166
  @thread = Thread.new { work } if restart_thread
148
167
  end
149
168
 
150
- def export_batch(batch)
151
- result_code = export_with_timeout(batch)
169
+ def export_batch(batch, timeout: @exporter_timeout_seconds)
170
+ result_code = @export_mutex.synchronize { @exporter.export(batch, timeout: timeout) }
152
171
  report_result(result_code, batch)
153
- end
154
-
155
- def export_with_timeout(batch)
156
- Timeout.timeout(@exporter_timeout_seconds) { @exporter.export(batch) }
157
- rescue Timeout::Error
158
- FAILURE
172
+ result_code
159
173
  end
160
174
 
161
175
  def report_result(result_code, batch)
@@ -18,7 +18,7 @@ module OpenTelemetry
18
18
  @stopped = false
19
19
  end
20
20
 
21
- def export(spans)
21
+ def export(spans, timeout: nil)
22
22
  return FAILURE if @stopped
23
23
 
24
24
  Array(spans).each { |s| pp s }
@@ -26,7 +26,7 @@ module OpenTelemetry
26
26
  SUCCESS
27
27
  end
28
28
 
29
- def shutdown
29
+ def shutdown(timeout: nil)
30
30
  @stopped = true
31
31
  SUCCESS
32
32
  end
@@ -60,9 +60,10 @@ module OpenTelemetry
60
60
  #
61
61
  # @param [Enumerable<SpanData>] span_datas the list of sampled {SpanData}s to be
62
62
  # exported.
63
+ # @param [optional Numeric] timeout An optional timeout in seconds.
63
64
  # @return [Integer] the result of the export, SUCCESS or
64
65
  # FAILURE
65
- def export(span_datas)
66
+ def export(span_datas, timeout: nil)
66
67
  @mutex.synchronize do
67
68
  return FAILURE if @stopped
68
69
 
@@ -74,9 +75,10 @@ module OpenTelemetry
74
75
  # Called when {TracerProvider#shutdown} is called, if this exporter is
75
76
  # registered to a {TracerProvider} object.
76
77
  #
78
+ # @param [optional Numeric] timeout An optional timeout in seconds.
77
79
  # @return [Integer] SUCCESS if no error occurred, FAILURE if a
78
80
  # non-specific failure occurred, TIMEOUT if a timeout occurred.
79
- def shutdown
81
+ def shutdown(timeout: nil)
80
82
  @mutex.synchronize do
81
83
  @finished_spans.clear
82
84
  @stopped = true
@@ -23,36 +23,34 @@ module OpenTelemetry
23
23
  #
24
24
  # @param [Enumerable<Span>] spans the list of sampled {Span}s to be
25
25
  # exported.
26
+ # @param [optional Numeric] timeout An optional timeout in seconds.
26
27
  # @return [Integer] the result of the export.
27
- def export(spans)
28
- @span_exporters.inject(SUCCESS) do |result_code, span_exporter|
29
- merge_result_code(result_code, span_exporter.export(spans))
28
+ def export(spans, timeout: nil)
29
+ start_time = Time.now
30
+ results = @span_exporters.map do |span_exporter|
31
+ span_exporter.export(spans, timeout: OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time))
30
32
  rescue => e # rubocop:disable Style/RescueStandardError
31
33
  OpenTelemetry.logger.warn("exception raised by export - #{e}")
32
34
  FAILURE
33
35
  end
36
+ results.uniq.max || SUCCESS
34
37
  end
35
38
 
36
39
  # Called when {TracerProvider#shutdown} is called, if this exporter is
37
40
  # registered to a {TracerProvider} object.
38
41
  #
42
+ # @param [optional Numeric] timeout An optional timeout in seconds.
39
43
  # @return [Integer] SUCCESS if no error occurred, FAILURE if a
40
44
  # non-specific failure occurred, TIMEOUT if a timeout occurred.
41
- def shutdown
42
- @span_exporters.map(&:shutdown).uniq.max
43
- end
44
-
45
- private
45
+ def shutdown(timeout: nil)
46
+ start_time = Time.now
47
+ results = @span_exporters.map do |processor|
48
+ remaining_timeout = OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time)
49
+ return TIMEOUT if remaining_timeout&.zero?
46
50
 
47
- # Returns a merged error code, see the rules in the code.
48
- def merge_result_code(result_code, new_result_code)
49
- if result_code == SUCCESS && new_result_code == SUCCESS
50
- # If both errors are success then return success.
51
- SUCCESS
52
- else
53
- # At this point at least one of the code is FAILURE, so return FAILURE.
54
- FAILURE
51
+ processor.shutdown(timeout: remaining_timeout)
55
52
  end
53
+ results.uniq.max || SUCCESS
56
54
  end
57
55
  end
58
56
  end
@@ -23,8 +23,9 @@ module OpenTelemetry
23
23
  #
24
24
  # @param [Enumerable<Span>] spans the list of sampled {Span}s to be
25
25
  # exported.
26
+ # @param [optional Numeric] timeout An optional timeout in seconds.
26
27
  # @return [Integer] the result of the export.
27
- def export(spans)
28
+ def export(spans, timeout: nil)
28
29
  return SUCCESS unless @stopped
29
30
 
30
31
  FAILURE
@@ -32,7 +33,9 @@ module OpenTelemetry
32
33
 
33
34
  # Called when {TracerProvider#shutdown} is called, if this exporter is
34
35
  # registered to a {TracerProvider} object.
35
- def shutdown
36
+ #
37
+ # @param [optional Numeric] timeout An optional timeout in seconds.
38
+ def shutdown(timeout: nil)
36
39
  @stopped = true
37
40
  SUCCESS
38
41
  end
@@ -12,6 +12,12 @@ module OpenTelemetry
12
12
  # {Span} to {io.opentelemetry.proto.trace.v1.Span} and passes it to the
13
13
  # configured exporter.
14
14
  #
15
+ # Typically, the SimpleSpanProcessor will be most suitable for use in testing;
16
+ # it should be used with caution in production. It may be appropriate for
17
+ # production use in scenarios where creating multiple threads is not desirable
18
+ # as well as scenarios where different custom attributes should be added to
19
+ # individual spans based on code scopes.
20
+ #
15
21
  # Only spans that are recorded are converted, {OpenTelemetry::Trace::Span#is_recording?} must
16
22
  # return true.
17
23
  class SimpleSpanProcessor
@@ -62,18 +68,20 @@ module OpenTelemetry
62
68
  # the process after an invocation, but before the `Processor` exports
63
69
  # the completed spans.
64
70
  #
71
+ # @param [optional Numeric] timeout An optional timeout in seconds.
65
72
  # @return [Integer] SUCCESS if no error occurred, FAILURE if a
66
73
  # non-specific failure occurred, TIMEOUT if a timeout occurred.
67
- def force_flush
74
+ def force_flush(timeout: nil)
68
75
  SUCCESS
69
76
  end
70
77
 
71
78
  # Called when {TracerProvider#shutdown} is called.
72
79
  #
80
+ # @param [optional Numeric] timeout An optional timeout in seconds.
73
81
  # @return [Integer] SUCCESS if no error occurred, FAILURE if a
74
82
  # non-specific failure occurred, TIMEOUT if a timeout occurred.
75
- def shutdown
76
- @span_exporter&.shutdown || SUCCESS
83
+ def shutdown(timeout: nil)
84
+ @span_exporter&.shutdown(timeout: timeout) || SUCCESS
77
85
  end
78
86
  end
79
87
  end
@@ -51,18 +51,34 @@ module OpenTelemetry
51
51
  # the process after an invocation, but before the `Processor` exports
52
52
  # the completed spans.
53
53
  #
54
+ # @param [optional Numeric] timeout An optional timeout in seconds.
54
55
  # @return [Integer] Export::SUCCESS if no error occurred, Export::FAILURE if
55
56
  # a non-specific failure occurred, Export::TIMEOUT if a timeout occurred.
56
- def force_flush
57
- @span_processors.map(&:force_flush).uniq.max
57
+ def force_flush(timeout: nil)
58
+ start_time = Time.now
59
+ results = @span_processors.map do |processor|
60
+ remaining_timeout = OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time)
61
+ return Export::TIMEOUT if remaining_timeout&.zero?
62
+
63
+ processor.force_flush(timeout: remaining_timeout)
64
+ end
65
+ results.uniq.max
58
66
  end
59
67
 
60
68
  # Called when {TracerProvider#shutdown} is called.
61
69
  #
70
+ # @param [optional Numeric] timeout An optional timeout in seconds.
62
71
  # @return [Integer] Export::SUCCESS if no error occurred, Export::FAILURE if
63
72
  # a non-specific failure occurred, Export::TIMEOUT if a timeout occurred.
64
- def shutdown
65
- @span_processors.map(&:shutdown).uniq.max
73
+ def shutdown(timeout: nil)
74
+ start_time = Time.now
75
+ results = @span_processors.map do |processor|
76
+ remaining_timeout = OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time)
77
+ return Export::TIMEOUT if remaining_timeout&.zero?
78
+
79
+ processor.shutdown(timeout: remaining_timeout)
80
+ end
81
+ results.uniq.max
66
82
  end
67
83
  end
68
84
  end
@@ -43,17 +43,19 @@ module OpenTelemetry
43
43
  # the process after an invocation, but before the `Processor` exports
44
44
  # the completed spans.
45
45
  #
46
+ # @param [optional Numeric] timeout An optional timeout in seconds.
46
47
  # @return [Integer] Export::SUCCESS if no error occurred, Export::FAILURE if
47
48
  # a non-specific failure occurred, Export::TIMEOUT if a timeout occurred.
48
- def force_flush
49
+ def force_flush(timeout: nil)
49
50
  Export::SUCCESS
50
51
  end
51
52
 
52
53
  # Called when {TracerProvider#shutdown} is called.
53
54
  #
55
+ # @param [optional Numeric] timeout An optional timeout in seconds.
54
56
  # @return [Integer] Export::SUCCESS if no error occurred, Export::FAILURE if
55
57
  # a non-specific failure occurred, Export::TIMEOUT if a timeout occurred.
56
- def shutdown
58
+ def shutdown(timeout: nil)
57
59
  Export::SUCCESS
58
60
  end
59
61
  end
@@ -25,9 +25,10 @@ module OpenTelemetry
25
25
  # Where:
26
26
  #
27
27
  # @param [String] trace_id The trace_id of the {Span} to be created.
28
- # @param [OpenTelemetry::Trace::SpanContext] parent_context The
29
- # {OpenTelemetry::Trace::SpanContext} of a parent span, typically
30
- # extracted from the wire. Can be nil for a root span.
28
+ # @param [OpenTelemetry::Context] parent_context The
29
+ # {OpenTelemetry::Context} with a parent {Span}. The {Span}'s
30
+ # {OpenTelemetry::Trace::SpanContext} may be invalid to indicate a
31
+ # root span.
31
32
  # @param [Enumerable<Link>] links A collection of links to be associated
32
33
  # with the {Span} to be created. Can be nil.
33
34
  # @param [String] name Name of the {Span} to be created.
@@ -37,12 +37,13 @@ module OpenTelemetry
37
37
  #
38
38
  # See {Samplers}.
39
39
  def should_sample?(trace_id:, parent_context:, links:, name:, kind:, attributes:)
40
- delegate = if parent_context.nil?
40
+ parent_span_context = OpenTelemetry::Trace.current_span(parent_context).context
41
+ delegate = if !parent_span_context.valid?
41
42
  @root
42
- elsif parent_context.remote?
43
- parent_context.trace_flags.sampled? ? @remote_parent_sampled : @remote_parent_not_sampled
43
+ elsif parent_span_context.remote?
44
+ parent_span_context.trace_flags.sampled? ? @remote_parent_sampled : @remote_parent_not_sampled
44
45
  else
45
- parent_context.trace_flags.sampled? ? @local_parent_sampled : @local_parent_not_sampled
46
+ parent_span_context.trace_flags.sampled? ? @local_parent_sampled : @local_parent_not_sampled
46
47
  end
47
48
  delegate.should_sample?(trace_id: trace_id, parent_context: parent_context, links: links, name: name, kind: kind, attributes: attributes)
48
49
  end
@@ -52,7 +52,7 @@ module OpenTelemetry
52
52
  # like events with the #add_event operation and attributes using
53
53
  # #set_attribute.
54
54
  def recording?
55
- true
55
+ !@ended
56
56
  end
57
57
 
58
58
  # Set attribute
@@ -33,7 +33,7 @@ module OpenTelemetry
33
33
  start_span(name, with_parent: Context.empty, attributes: attributes, links: links, start_timestamp: start_timestamp, kind: kind)
34
34
  end
35
35
 
36
- def start_span(name, with_parent: nil, attributes: nil, links: nil, start_timestamp: nil, kind: nil) # rubocop:disable Metrics/AbcSize
36
+ def start_span(name, with_parent: nil, attributes: nil, links: nil, start_timestamp: nil, kind: nil)
37
37
  name ||= 'empty'
38
38
 
39
39
  with_parent ||= Context.current
@@ -42,12 +42,10 @@ module OpenTelemetry
42
42
  parent_span_id = parent_span_context.span_id
43
43
  tracestate = parent_span_context.tracestate
44
44
  trace_id = parent_span_context.trace_id
45
- else
46
- parent_span_context = nil
47
45
  end
48
46
  trace_id ||= OpenTelemetry::Trace.generate_trace_id
49
47
  sampler = tracer_provider.active_trace_config.sampler
50
- result = sampler.should_sample?(trace_id: trace_id, parent_context: parent_span_context, links: links, name: name, kind: kind, attributes: attributes)
48
+ result = sampler.should_sample?(trace_id: trace_id, parent_context: with_parent, links: links, name: name, kind: kind, attributes: attributes)
51
49
  internal_create_span(result, name, kind, trace_id, parent_span_id, attributes, links, start_timestamp, tracestate, with_parent)
52
50
  end
53
51
 
@@ -49,13 +49,15 @@ module OpenTelemetry
49
49
  # processed and exported.
50
50
  #
51
51
  # After this is called all the newly created {Span}s will be no-op.
52
- def shutdown
52
+ #
53
+ # @param [optional Numeric] timeout An optional timeout in seconds.
54
+ def shutdown(timeout: nil)
53
55
  @mutex.synchronize do
54
56
  if @stopped
55
57
  OpenTelemetry.logger.warn('calling Tracer#shutdown multiple times.')
56
58
  return
57
59
  end
58
- @active_span_processor.shutdown
60
+ @active_span_processor.shutdown(timeout: timeout)
59
61
  @stopped = true
60
62
  end
61
63
  end
@@ -7,6 +7,6 @@
7
7
  module OpenTelemetry
8
8
  module SDK
9
9
  ## Current OpenTelemetry version
10
- VERSION = '0.8.0'
10
+ VERSION = '0.9.0'
11
11
  end
12
12
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-27 00:00:00.000000000 Z
11
+ date: 2020-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.8.0
19
+ version: 0.9.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.8.0
26
+ version: 0.9.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: opentelemetry-common
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.9.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.9.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -186,10 +200,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
186
200
  licenses:
187
201
  - Apache-2.0
188
202
  metadata:
189
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v0.8.0/file.CHANGELOG.html
203
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v0.9.0/file.CHANGELOG.html
190
204
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/master/sdk
191
205
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
192
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v0.8.0
206
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v0.9.0
193
207
  post_install_message:
194
208
  rdoc_options: []
195
209
  require_paths: