opentelemetry-sdk 0.6.0 → 0.7.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: 3a01fcf121db23108ffb47d196f9594993018bb1b945242710620bb87daa8320
4
- data.tar.gz: ef3b3e9cd4e2853a22ffb149e7a18cbd021988412d24c40350192e222b3be58b
3
+ metadata.gz: b5510dccb3f3f94057ab6f17a625b8c71fbeeb958d2ec2de2eb732bfc59a4225
4
+ data.tar.gz: 768a8e36a2a5a34458d6872584339a93d14d83b0302ed998626d21d97d4592b7
5
5
  SHA512:
6
- metadata.gz: 5da08d0e902ece66efc7afa892f99f2b9fe3bcd5b89b51cd3da1a565a23ab0917eb1c39d6fb44ed6b82a71048624cb357539d9b6305b1a0c8debc594ef2467d3
7
- data.tar.gz: 5fe47387c0d91e8d5436be4d4464839f08a9ae46964e8fe1679ab6ef7e7bf8b7a59ae086472d465e6f12c57b70c712a982064351f287a8ebbb6bbe173c37b45d
6
+ metadata.gz: ab2eb7f6eec8f1c62812e8a6f53502a2f29d017489078ede3c5fc4b4b9928435e71658c2cb506b73a16098ef681fffd9d088a028fd6938fec3da0d6a30cc3ec8
7
+ data.tar.gz: a1ee4191297bdb3491988e0bca431274f29685057578781e3911bd9f34e66042826aa1528c5eda9172d65beeaf6aeed269185665eb0f6a2361500de09a311c10
data/.yardopts CHANGED
@@ -1,9 +1,9 @@
1
1
  --no-private
2
2
  --title=OpenTelemetry SDK
3
3
  --markup=markdown
4
- --main=OVERVIEW.md
4
+ --main=README.md
5
5
  ./lib/opentelemetry/sdk/**/*.rb
6
6
  ./lib/opentelemetry/sdk.rb
7
7
  -
8
- OVERVIEW.md
8
+ README.md
9
9
  CHANGELOG.md
@@ -1,5 +1,14 @@
1
1
  # Release History: opentelemetry-sdk
2
2
 
3
+ ### v0.7.0 / 2020-10-07
4
+
5
+ * ADDED: Add service_name setter to configurator
6
+ * ADDED: Add service_version setter to configurator
7
+ * FIXED: Fork safety for batch processor
8
+ * FIXED: Don't generate a span ID unnecessarily
9
+ * DOCS: Fix Configurator#add_span_processor
10
+ * DOCS: Standardize toplevel docs structure and readme
11
+
3
12
  ### v0.6.0 / 2020-09-10
4
13
 
5
14
  * BREAKING CHANGE: Rename Resource labels to attributes
@@ -44,6 +44,26 @@ module OpenTelemetry
44
44
  @resource = new_resource.merge(@resource)
45
45
  end
46
46
 
47
+ # Accepts a string that is merged in as the service.name resource attribute.
48
+ # The most recent assigned value will be used in the event of repeated
49
+ # calls to this setter.
50
+ # @param [String] service_name The value to be used as the service name
51
+ def service_name=(service_name)
52
+ @resource = OpenTelemetry::SDK::Resources::Resource.create(
53
+ OpenTelemetry::SDK::Resources::Constants::SERVICE_RESOURCE[:name] => service_name
54
+ ).merge(@resource)
55
+ end
56
+
57
+ # Accepts a string that is merged in as the service.version resource attribute.
58
+ # The most recent assigned value will be used in the event of repeated
59
+ # calls to this setter.
60
+ # @param [String] service_version The value to be used as the service version
61
+ def service_version=(service_version)
62
+ @resource = OpenTelemetry::SDK::Resources::Resource.create(
63
+ OpenTelemetry::SDK::Resources::Constants::SERVICE_RESOURCE[:version] => service_version
64
+ ).merge(@resource)
65
+ end
66
+
47
67
  # Install an instrumentation with specificied optional +config+.
48
68
  # Use can be called multiple times to install multiple instrumentation.
49
69
  # Only +use+ or +use_all+, but not both when installing
@@ -73,8 +93,8 @@ module OpenTelemetry
73
93
 
74
94
  # Add a span processor to the export pipeline
75
95
  #
76
- # @param [#on_start, #on_finish, #shutdown] span_processor A span_processor
77
- # that satisfies the duck type #on_start, #on_finish, #shutdown. See
96
+ # @param [#on_start, #on_finish, #shutdown, #force_flush] span_processor A span_processor
97
+ # that satisfies the duck type #on_start, #on_finish, #shutdown, #force_flush. See
78
98
  # {SimpleSpanProcessor} for an example.
79
99
  def add_span_processor(span_processor)
80
100
  @span_processors << span_processor
@@ -7,16 +7,21 @@
7
7
  module OpenTelemetry
8
8
  module SDK
9
9
  module Trace
10
- # The Export module contains the built-in exporters for the OpenTelemetry
10
+ # The Export module contains the built-in exporters and span processors for the OpenTelemetry
11
11
  # reference implementation.
12
12
  module Export
13
- # Result codes for the SpanExporter#export method.
13
+ # Result codes for the SpanExporter#export method and the SpanProcessor#force_flush and SpanProcessor#shutdown methods.
14
14
 
15
- # The export operation finished successfully.
15
+ # The operation finished successfully.
16
16
  SUCCESS = 0
17
17
 
18
- # The export operation finished with an error.
18
+ # The operation finished with an error.
19
19
  FAILURE = 1
20
+
21
+ # Additional result code for the SpanProcessor#force_flush and SpanProcessor#shutdown methods.
22
+
23
+ # The operation timed out.
24
+ TIMEOUT = 2
20
25
  end
21
26
  end
22
27
  end
@@ -56,11 +56,13 @@ module OpenTelemetry
56
56
  @max_queue_size = max_queue_size
57
57
  @batch_size = max_export_batch_size
58
58
  @spans = []
59
- @thread = Thread.new { work }
59
+ @pid = nil
60
+ @thread = nil
61
+ reset_on_fork
60
62
  end
61
63
 
62
64
  # does nothing for this processor
63
- def on_start(span)
65
+ def on_start(span, parent_context)
64
66
  # noop
65
67
  end
66
68
 
@@ -69,6 +71,7 @@ module OpenTelemetry
69
71
  return unless span.context.trace_flags.sampled?
70
72
 
71
73
  lock do
74
+ reset_on_fork
72
75
  n = spans.size + 1 - max_queue_size
73
76
  spans.shift(n) if n.positive?
74
77
  spans << span
@@ -84,17 +87,27 @@ module OpenTelemetry
84
87
  # necessary, such as when using some FaaS providers that may suspend
85
88
  # the process after an invocation, but before the `Processor` exports
86
89
  # the completed spans.
90
+ #
91
+ # @return [Integer] SUCCESS if no error occurred, FAILURE if a
92
+ # non-specific failure occurred, TIMEOUT if a timeout occurred.
87
93
  def force_flush
88
- snapshot = lock { spans.shift(spans.size) }
94
+ snapshot = lock do
95
+ reset_on_fork(restart_thread: false) if @keep_running
96
+ spans.shift(spans.size)
97
+ end
89
98
  until snapshot.empty?
90
99
  batch = snapshot.shift(@batch_size).map!(&:to_span_data)
91
100
  result_code = @exporter.export(batch)
92
101
  report_result(result_code, batch)
93
102
  end
103
+ SUCCESS
94
104
  end
95
105
 
96
106
  # shuts the consumer thread down and flushes the current accumulated buffer
97
107
  # will block until the thread is finished
108
+ #
109
+ # @return [Integer] SUCCESS if no error occurred, FAILURE if a
110
+ # non-specific failure occurred, TIMEOUT if a timeout occurred.
98
111
  def shutdown
99
112
  lock do
100
113
  @keep_running = false
@@ -113,6 +126,7 @@ module OpenTelemetry
113
126
  def work
114
127
  loop do
115
128
  batch = lock do
129
+ reset_on_fork(restart_thread: false)
116
130
  @condition.wait(@mutex, @delay_seconds) if spans.size < batch_size && @keep_running
117
131
  @condition.wait(@mutex, @delay_seconds) while spans.empty? && @keep_running
118
132
  return unless @keep_running
@@ -124,6 +138,15 @@ module OpenTelemetry
124
138
  end
125
139
  end
126
140
 
141
+ def reset_on_fork(restart_thread: true)
142
+ pid = Process.pid
143
+ return if @pid == pid
144
+
145
+ @pid = pid
146
+ spans.clear
147
+ @thread = Thread.new { work } if restart_thread
148
+ end
149
+
127
150
  def export_batch(batch)
128
151
  result_code = export_with_timeout(batch)
129
152
  report_result(result_code, batch)
@@ -14,24 +14,21 @@ module OpenTelemetry
14
14
  #
15
15
  # Potentially useful for exploratory purposes.
16
16
  class ConsoleSpanExporter
17
- ResultCodes = OpenTelemetry::SDK::Trace::Export
18
-
19
- private_constant(:ResultCodes)
20
-
21
17
  def initialize
22
18
  @stopped = false
23
19
  end
24
20
 
25
21
  def export(spans)
26
- return ResultCodes::FAILURE if @stopped
22
+ return FAILURE if @stopped
27
23
 
28
24
  Array(spans).each { |s| pp s }
29
25
 
30
- ResultCodes::SUCCESS
26
+ SUCCESS
31
27
  end
32
28
 
33
29
  def shutdown
34
30
  @stopped = true
31
+ SUCCESS
35
32
  end
36
33
  end
37
34
  end
@@ -73,11 +73,15 @@ module OpenTelemetry
73
73
 
74
74
  # Called when {TracerProvider#shutdown} is called, if this exporter is
75
75
  # registered to a {TracerProvider} object.
76
+ #
77
+ # @return [Integer] SUCCESS if no error occurred, FAILURE if a
78
+ # non-specific failure occurred, TIMEOUT if a timeout occurred.
76
79
  def shutdown
77
80
  @mutex.synchronize do
78
81
  @finished_spans.clear
79
82
  @stopped = true
80
83
  end
84
+ SUCCESS
81
85
  end
82
86
  end
83
87
  end
@@ -35,8 +35,11 @@ module OpenTelemetry
35
35
 
36
36
  # Called when {TracerProvider#shutdown} is called, if this exporter is
37
37
  # registered to a {TracerProvider} object.
38
+ #
39
+ # @return [Integer] SUCCESS if no error occurred, FAILURE if a
40
+ # non-specific failure occurred, TIMEOUT if a timeout occurred.
38
41
  def shutdown
39
- @span_exporters.each(&:shutdown)
42
+ @span_exporters.map(&:shutdown).uniq.max
40
43
  end
41
44
 
42
45
  private
@@ -34,6 +34,7 @@ module OpenTelemetry
34
34
  # registered to a {TracerProvider} object.
35
35
  def shutdown
36
36
  @stopped = true
37
+ SUCCESS
37
38
  end
38
39
  end
39
40
  end
@@ -33,7 +33,9 @@ module OpenTelemetry
33
33
  # not throw or block the execution thread.
34
34
  #
35
35
  # @param [Span] span the {Span} that just started.
36
- def on_start(span)
36
+ # @param [Context] parent_context the parent {Context} of the newly
37
+ # started span.
38
+ def on_start(span, parent_context)
37
39
  # Do nothing.
38
40
  end
39
41
 
@@ -59,11 +61,19 @@ module OpenTelemetry
59
61
  # necessary, such as when using some FaaS providers that may suspend
60
62
  # the process after an invocation, but before the `Processor` exports
61
63
  # the completed spans.
62
- def force_flush; end
64
+ #
65
+ # @return [Integer] SUCCESS if no error occurred, FAILURE if a
66
+ # non-specific failure occurred, TIMEOUT if a timeout occurred.
67
+ def force_flush
68
+ SUCCESS
69
+ end
63
70
 
64
71
  # Called when {TracerProvider#shutdown} is called.
72
+ #
73
+ # @return [Integer] SUCCESS if no error occurred, FAILURE if a
74
+ # non-specific failure occurred, TIMEOUT if a timeout occurred.
65
75
  def shutdown
66
- @span_exporter&.shutdown
76
+ @span_exporter&.shutdown || SUCCESS
67
77
  end
68
78
  end
69
79
  end
@@ -26,8 +26,10 @@ module OpenTelemetry
26
26
  # not throw or block the execution thread.
27
27
  #
28
28
  # @param [Span] span the {Span} that just started.
29
- def on_start(span)
30
- @span_processors.each { |processor| processor.on_start(span) }
29
+ # @param [Context] parent_context the parent {Context} of the newly
30
+ # started span.
31
+ def on_start(span, parent_context)
32
+ @span_processors.each { |processor| processor.on_start(span, parent_context) }
31
33
  end
32
34
 
33
35
  # Called when a {Span} is ended, if the {Span#recording?}
@@ -48,13 +50,19 @@ module OpenTelemetry
48
50
  # necessary, such as when using some FaaS providers that may suspend
49
51
  # the process after an invocation, but before the `Processor` exports
50
52
  # the completed spans.
53
+ #
54
+ # @return [Integer] Export::SUCCESS if no error occurred, Export::FAILURE if
55
+ # a non-specific failure occurred, Export::TIMEOUT if a timeout occurred.
51
56
  def force_flush
52
- @span_processors.each(&:force_flush)
57
+ @span_processors.map(&:force_flush).uniq.max
53
58
  end
54
59
 
55
60
  # Called when {TracerProvider#shutdown} is called.
61
+ #
62
+ # @return [Integer] Export::SUCCESS if no error occurred, Export::FAILURE if
63
+ # a non-specific failure occurred, Export::TIMEOUT if a timeout occurred.
56
64
  def shutdown
57
- @span_processors.each(&:shutdown)
65
+ @span_processors.map(&:shutdown).uniq.max
58
66
  end
59
67
  end
60
68
  end
@@ -22,7 +22,9 @@ module OpenTelemetry
22
22
  # not throw or block the execution thread.
23
23
  #
24
24
  # @param [Span] span the {Span} that just started.
25
- def on_start(span); end
25
+ # @param [Context] parent_context the parent {Context} of the newly
26
+ # started span.
27
+ def on_start(span, parent_context); end
26
28
 
27
29
  # Called when a {Span} is ended, if the {Span#recording?}
28
30
  # returns true.
@@ -40,10 +42,20 @@ module OpenTelemetry
40
42
  # necessary, such as when using some FaaS providers that may suspend
41
43
  # the process after an invocation, but before the `Processor` exports
42
44
  # the completed spans.
43
- def force_flush; end
45
+ #
46
+ # @return [Integer] Export::SUCCESS if no error occurred, Export::FAILURE if
47
+ # a non-specific failure occurred, Export::TIMEOUT if a timeout occurred.
48
+ def force_flush
49
+ Export::SUCCESS
50
+ end
44
51
 
45
52
  # Called when {TracerProvider#shutdown} is called.
46
- def shutdown; end
53
+ #
54
+ # @return [Integer] Export::SUCCESS if no error occurred, Export::FAILURE if
55
+ # a non-specific failure occurred, Export::TIMEOUT if a timeout occurred.
56
+ def shutdown
57
+ Export::SUCCESS
58
+ end
47
59
  end
48
60
  end
49
61
  end
@@ -37,18 +37,18 @@ module OpenTelemetry
37
37
  # to the {Span} to be created. Can be nil.
38
38
  # @return [Result] The sampling result.
39
39
  module Samplers
40
- RECORD_AND_SAMPLED = Result.new(decision: Decision::RECORD_AND_SAMPLED)
41
- NOT_RECORD = Result.new(decision: Decision::NOT_RECORD)
42
- RECORD = Result.new(decision: Decision::RECORD)
43
- SAMPLING_HINTS = [Decision::NOT_RECORD, Decision::RECORD, Decision::RECORD_AND_SAMPLED].freeze
40
+ RECORD_AND_SAMPLE = Result.new(decision: Decision::RECORD_AND_SAMPLE)
41
+ DROP = Result.new(decision: Decision::DROP)
42
+ RECORD_ONLY = Result.new(decision: Decision::RECORD_ONLY)
43
+ SAMPLING_HINTS = [Decision::DROP, Decision::RECORD_ONLY, Decision::RECORD_AND_SAMPLE].freeze
44
44
 
45
- private_constant(:RECORD_AND_SAMPLED, :NOT_RECORD, :RECORD, :SAMPLING_HINTS)
45
+ private_constant(:RECORD_AND_SAMPLE, :DROP, :RECORD_ONLY, :SAMPLING_HINTS)
46
46
 
47
- # Returns a {Result} with {Decision::RECORD_AND_SAMPLED}.
48
- ALWAYS_ON = ConstantSampler.new(result: RECORD_AND_SAMPLED, description: 'AlwaysOnSampler')
47
+ # Returns a {Result} with {Decision::RECORD_AND_SAMPLE}.
48
+ ALWAYS_ON = ConstantSampler.new(result: RECORD_AND_SAMPLE, description: 'AlwaysOnSampler')
49
49
 
50
- # Returns a {Result} with {Decision::NOT_RECORD}.
51
- ALWAYS_OFF = ConstantSampler.new(result: NOT_RECORD, description: 'AlwaysOffSampler')
50
+ # Returns a {Result} with {Decision::DROP}.
51
+ ALWAYS_OFF = ConstantSampler.new(result: DROP, description: 'AlwaysOffSampler')
52
52
 
53
53
  # Returns a new sampler. It delegates to samplers according to the following rules:
54
54
  #
@@ -12,13 +12,13 @@ module OpenTelemetry
12
12
  # decision part of a sampling {Result}.
13
13
  module Decision
14
14
  # Decision to not record events and not sample.
15
- NOT_RECORD = :__not_record__
15
+ DROP = :__drop__
16
16
 
17
17
  # Decision to record events and not sample.
18
- RECORD = :__record__
18
+ RECORD_ONLY = :__record_only__
19
19
 
20
20
  # Decision to record events and sample.
21
- RECORD_AND_SAMPLED = :__record_and_sampled__
21
+ RECORD_AND_SAMPLE = :__record_and_sample__
22
22
  end
23
23
  end
24
24
  end
@@ -14,7 +14,7 @@ module OpenTelemetry
14
14
  # root span.
15
15
  class Result
16
16
  EMPTY_HASH = {}.freeze
17
- DECISIONS = [Decision::RECORD, Decision::NOT_RECORD, Decision::RECORD_AND_SAMPLED].freeze
17
+ DECISIONS = [Decision::RECORD_ONLY, Decision::DROP, Decision::RECORD_AND_SAMPLE].freeze
18
18
  private_constant(:EMPTY_HASH, :DECISIONS)
19
19
 
20
20
  # Returns a frozen hash of attributes to be attached span.
@@ -39,14 +39,14 @@ module OpenTelemetry
39
39
  #
40
40
  # @return [Boolean] sampling decision
41
41
  def sampled?
42
- @decision == Decision::RECORD_AND_SAMPLED
42
+ @decision == Decision::RECORD_AND_SAMPLE
43
43
  end
44
44
 
45
45
  # Returns true if this span should record events, attributes, status, etc.
46
46
  #
47
47
  # @return [Boolean] recording decision
48
48
  def recording?
49
- @decision != Decision::NOT_RECORD
49
+ @decision != Decision::DROP
50
50
  end
51
51
  end
52
52
  end
@@ -27,9 +27,9 @@ module OpenTelemetry
27
27
  # Ignored for sampling decision: parent_context:, links, name, kind, attributes.
28
28
 
29
29
  if sample?(trace_id)
30
- RECORD_AND_SAMPLED
30
+ RECORD_AND_SAMPLE
31
31
  else
32
- NOT_RECORD
32
+ DROP
33
33
  end
34
34
  end
35
35
 
@@ -16,6 +16,10 @@ module OpenTelemetry
16
16
  #
17
17
  # rubocop:disable Metrics/ClassLength
18
18
  class Span < OpenTelemetry::Trace::Span
19
+ DEFAULT_STATUS = OpenTelemetry::Trace::Status.new(OpenTelemetry::Trace::Status::UNSET)
20
+
21
+ private_constant(:DEFAULT_STATUS)
22
+
19
23
  # The following readers are intended for the use of SpanProcessors and
20
24
  # should not be considered part of the public interface for instrumentation.
21
25
  attr_reader :name, :status, :kind, :parent_span_id, :start_timestamp, :end_timestamp, :links, :resource, :instrumentation_library
@@ -219,7 +223,6 @@ module OpenTelemetry
219
223
  @kind,
220
224
  @status,
221
225
  @parent_span_id,
222
- @child_count,
223
226
  @total_recorded_attributes,
224
227
  @total_recorded_events,
225
228
  @total_recorded_links,
@@ -238,7 +241,7 @@ module OpenTelemetry
238
241
  end
239
242
 
240
243
  # @api private
241
- def initialize(context, name, kind, parent_span_id, trace_config, span_processor, attributes, links, start_timestamp, resource, instrumentation_library) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
244
+ def initialize(context, parent_context, name, kind, parent_span_id, trace_config, span_processor, attributes, links, start_timestamp, resource, instrumentation_library) # rubocop:disable Metrics/AbcSize
242
245
  super(span_context: context)
243
246
  @mutex = Mutex.new
244
247
  @name = name
@@ -249,8 +252,7 @@ module OpenTelemetry
249
252
  @resource = resource
250
253
  @instrumentation_library = instrumentation_library
251
254
  @ended = false
252
- @status = nil
253
- @child_count = 0
255
+ @status = DEFAULT_STATUS
254
256
  @total_recorded_events = 0
255
257
  @total_recorded_links = links&.size || 0
256
258
  @total_recorded_attributes = attributes&.size || 0
@@ -260,7 +262,7 @@ module OpenTelemetry
260
262
  trim_span_attributes(@attributes)
261
263
  @events = nil
262
264
  @links = trim_links(links, trace_config.max_links_count, trace_config.max_attributes_per_link)
263
- @span_processor.on_start(self)
265
+ @span_processor.on_start(self, parent_context)
264
266
  end
265
267
 
266
268
  # TODO: Java implementation overrides finalize to log if a span isn't finished.
@@ -14,7 +14,6 @@ module OpenTelemetry
14
14
  :kind,
15
15
  :status,
16
16
  :parent_span_id,
17
- :child_count,
18
17
  :total_recorded_attributes,
19
18
  :total_recorded_events,
20
19
  :total_recorded_links,
@@ -30,33 +30,34 @@ module OpenTelemetry
30
30
  end
31
31
 
32
32
  def start_root_span(name, attributes: nil, links: nil, start_timestamp: nil, kind: nil)
33
- start_span(name, with_parent_context: Context.empty, attributes: attributes, links: links, start_timestamp: start_timestamp, kind: kind)
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, with_parent_context: nil, attributes: nil, links: nil, start_timestamp: nil, kind: nil)
36
+ def start_span(name, with_parent: nil, attributes: nil, links: nil, start_timestamp: nil, kind: nil) # rubocop:disable Metrics/AbcSize
37
37
  name ||= 'empty'
38
38
 
39
- parent_span_context = with_parent&.context || active_span_context(with_parent_context)
39
+ with_parent ||= Context.current
40
+ parent_span_context = current_span(with_parent).context
40
41
  parent_span_context = nil unless parent_span_context.valid?
41
42
  parent_span_id = parent_span_context&.span_id
42
43
  tracestate = parent_span_context&.tracestate
43
44
  trace_id = parent_span_context&.trace_id
44
45
  trace_id ||= OpenTelemetry::Trace.generate_trace_id
45
- span_id = OpenTelemetry::Trace.generate_span_id
46
46
  sampler = tracer_provider.active_trace_config.sampler
47
47
  result = sampler.should_sample?(trace_id: trace_id, parent_context: parent_span_context, links: links, name: name, kind: kind, attributes: attributes)
48
- internal_create_span(result, name, kind, trace_id, span_id, parent_span_id, attributes, links, start_timestamp, tracestate)
48
+ internal_create_span(result, name, kind, trace_id, parent_span_id, attributes, links, start_timestamp, tracestate, with_parent)
49
49
  end
50
50
 
51
51
  private
52
52
 
53
- def internal_create_span(result, name, kind, trace_id, span_id, parent_span_id, attributes, links, start_timestamp, tracestate) # rubocop:disable Metrics/AbcSize
53
+ def internal_create_span(result, name, kind, trace_id, parent_span_id, attributes, links, start_timestamp, tracestate, parent_context) # rubocop:disable Metrics/AbcSize
54
54
  if result.recording? && !tracer_provider.stopped?
55
55
  trace_flags = result.sampled? ? OpenTelemetry::Trace::TraceFlags::SAMPLED : OpenTelemetry::Trace::TraceFlags::DEFAULT
56
56
  context = OpenTelemetry::Trace::SpanContext.new(trace_id: trace_id, trace_flags: trace_flags, tracestate: tracestate)
57
57
  attributes = attributes&.merge(result.attributes) || result.attributes
58
58
  Span.new(
59
59
  context,
60
+ parent_context,
60
61
  name,
61
62
  kind,
62
63
  parent_span_id,
@@ -7,6 +7,6 @@
7
7
  module OpenTelemetry
8
8
  module SDK
9
9
  ## Current OpenTelemetry version
10
- VERSION = '0.6.0'
10
+ VERSION = '0.7.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.6.0
4
+ version: 0.7.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-09-11 00:00:00.000000000 Z
11
+ date: 2020-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.6.0
19
+ version: 0.7.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.6.0
26
+ version: 0.7.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -201,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
201
201
  - !ruby/object:Gem::Version
202
202
  version: '0'
203
203
  requirements: []
204
- rubygems_version: 3.1.2
204
+ rubygems_version: 3.1.4
205
205
  signing_key:
206
206
  specification_version: 4
207
207
  summary: A stats collection and distributed tracing framework