opentelemetry-api 0.7.0 → 0.8.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: 9aa5a0850640df96314f3fd539394f878d899b47e1a95e725abc6c0afd6b5a68
4
- data.tar.gz: c64e3676eb965f77f64a14dd5b515128644d79e8337df46c49ddf652496c8384
3
+ metadata.gz: dde8070adb35e548bd260c9a647783d3e240080b58be84712bf8f7dd45bb08a9
4
+ data.tar.gz: 21b7d0fb202e5ff7f4dc4546b422628494b1a6f683297e66a4fcc2ea93e1b784
5
5
  SHA512:
6
- metadata.gz: e72ba6591aa9c38b2036c1c27994f280d331fca28817d19fba52991f4477afde6f1bbca040eeb8d4049f084e63ca1e7666f1ff7eed86a1ce43fd79995b4d0fa4
7
- data.tar.gz: 903010838dae911df19e9f06dc41080bce7640eb7caab03b6b4c9ca36a9a65105f9b58ef68f3bb5258e66d30015286cb8b9d18ca9ae600c9e31b124412ce2872
6
+ metadata.gz: 628d5cb01f3ca3b681648aba7341c7a94035d076546f1ddd64fb2cef69a1620ad20a40e258689da1b096fbdfb447f8bce0b2216ec1ed6cad4a6edd907b13fef0
7
+ data.tar.gz: aabaabb7a44c0bdf48d55b86bfd04e51b3f837f628c361d457b593600dfb82e05a02976e34265bce49348ba91f39f1086d62e927f52587c047d1470f1eae83eb
@@ -1,5 +1,16 @@
1
1
  # Release History: opentelemetry-api
2
2
 
3
+ ### v0.8.0 / 2020-10-27
4
+
5
+ * BREAKING CHANGE: Move context/span methods to Trace module
6
+ * BREAKING CHANGE: Remove 'canonical' from status codes
7
+ * BREAKING CHANGE: Assorted SpanContext fixes
8
+
9
+ * ADDED: B3 support
10
+ * FIXED: Move context/span methods to Trace module
11
+ * FIXED: Remove 'canonical' from status codes
12
+ * FIXED: Assorted SpanContext fixes
13
+
3
14
  ### v0.7.0 / 2020-10-07
4
15
 
5
16
  * FIXED: Safely navigate span variable during error cases
@@ -9,6 +9,12 @@ module OpenTelemetry
9
9
  # single logical operation, consolidated across various components of an
10
10
  # application.
11
11
  module Trace
12
+ extend self
13
+
14
+ CURRENT_SPAN_KEY = Context.create_key('current-span')
15
+
16
+ private_constant :CURRENT_SPAN_KEY
17
+
12
18
  # An invalid trace identifier, a 16-byte string with all zero bytes.
13
19
  INVALID_TRACE_ID = ("\0" * 16).b
14
20
 
@@ -19,7 +25,7 @@ module OpenTelemetry
19
25
  # non-zero byte.
20
26
  #
21
27
  # @return [String] a valid trace ID.
22
- def self.generate_trace_id
28
+ def generate_trace_id
23
29
  loop do
24
30
  id = Random::DEFAULT.bytes(16)
25
31
  return id unless id == INVALID_TRACE_ID
@@ -30,12 +36,41 @@ module OpenTelemetry
30
36
  # non-zero byte.
31
37
  #
32
38
  # @return [String] a valid span ID.
33
- def self.generate_span_id
39
+ def generate_span_id
34
40
  loop do
35
41
  id = Random::DEFAULT.bytes(8)
36
42
  return id unless id == INVALID_SPAN_ID
37
43
  end
38
44
  end
45
+
46
+ # Returns the current span from the current or provided context
47
+ #
48
+ # @param [optional Context] context The context to lookup the current
49
+ # {Span} from. Defaults to Context.current
50
+ def current_span(context = nil)
51
+ context ||= Context.current
52
+ context.value(CURRENT_SPAN_KEY) || Span::INVALID
53
+ end
54
+
55
+ # Returns a context containing the span, derived from the optional parent
56
+ # context, or the current context if one was not provided.
57
+ #
58
+ # @param [optional Context] context The context to use as the parent for
59
+ # the returned context
60
+ def context_with_span(span, parent_context: Context.current)
61
+ parent_context.set_value(CURRENT_SPAN_KEY, span)
62
+ end
63
+
64
+ # Activates/deactivates the Span within the current Context, which makes the "current span"
65
+ # available implicitly.
66
+ #
67
+ # On exit, the Span that was active before calling this method will be reactivated.
68
+ #
69
+ # @param [Span] span the span to activate
70
+ # @yield [span, context] yields span and a context containing the span to the block.
71
+ def with_span(span)
72
+ Context.with_value(CURRENT_SPAN_KEY, span) { |c, s| yield s, c }
73
+ end
39
74
  end
40
75
  end
41
76
 
@@ -18,7 +18,7 @@ module OpenTelemetry
18
18
  # Returns the {SpanContext} for this link
19
19
  #
20
20
  # @return [SpanContext]
21
- attr_reader :context
21
+ attr_reader :span_context
22
22
 
23
23
  # Returns the frozen attributes for this link.
24
24
  #
@@ -33,13 +33,13 @@ module OpenTelemetry
33
33
  # frozen during Link initialization.
34
34
  # @return [Link]
35
35
  def initialize(span_context, attributes = nil)
36
- @context = span_context
36
+ @span_context = span_context
37
37
  @attributes = attributes.freeze || EMPTY_ATTRIBUTES
38
38
  end
39
39
 
40
40
  # Returns true if two {Link}s are equal.
41
41
  def ==(other)
42
- other.context == @context && other.attributes == @attributes
42
+ other.span_context == @span_context && other.attributes == @attributes
43
43
  end
44
44
  end
45
45
  end
@@ -4,7 +4,6 @@
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
7
- require 'opentelemetry/trace/propagation/context_keys'
8
7
  require 'opentelemetry/trace/propagation/trace_context'
9
8
 
10
9
  module OpenTelemetry
@@ -48,7 +48,7 @@ module OpenTelemetry
48
48
  tracestate: tracestate,
49
49
  remote: true)
50
50
  span = Trace::Span.new(span_context: span_context)
51
- context.set_value(ContextKeys.current_span_key, span)
51
+ OpenTelemetry::Trace.context_with_span(span)
52
52
  rescue OpenTelemetry::Error
53
53
  context
54
54
  end
@@ -36,7 +36,7 @@ module OpenTelemetry
36
36
  return carrier unless (span_context = span_context_from(context))
37
37
 
38
38
  setter ||= DEFAULT_SETTER
39
- setter.call(carrier, @traceparent_key, TraceParent.from_context(span_context).to_s)
39
+ setter.call(carrier, @traceparent_key, TraceParent.from_span_context(span_context).to_s)
40
40
  setter.call(carrier, @tracestate_key, span_context.tracestate) unless span_context.tracestate.nil?
41
41
 
42
42
  carrier
@@ -45,7 +45,7 @@ module OpenTelemetry
45
45
  private
46
46
 
47
47
  def span_context_from(context)
48
- context[ContextKeys.current_span_key]&.context
48
+ OpenTelemetry::Trace.current_span(context).context
49
49
  end
50
50
  end
51
51
  end
@@ -31,9 +31,9 @@ module OpenTelemetry
31
31
 
32
32
  class << self
33
33
  # Creates a new {TraceParent} from a supplied {Trace::SpanContext}
34
- # @param [SpanContext] ctx The context
34
+ # @param [SpanContext] ctx The span context
35
35
  # @return [TraceParent] a trace parent
36
- def from_context(ctx)
36
+ def from_span_context(ctx)
37
37
  new(trace_id: ctx.trace_id, span_id: ctx.span_id, flags: ctx.trace_flags)
38
38
  end
39
39
 
@@ -9,15 +9,15 @@ require 'opentelemetry/trace/util/http_to_status'
9
9
  module OpenTelemetry
10
10
  module Trace
11
11
  # Status represents the status of a finished {Span}. It is composed of a
12
- # canonical code in conjunction with an optional descriptive message.
12
+ # status code in conjunction with an optional descriptive message.
13
13
  class Status
14
14
  # Convenience utility, not in API spec:
15
15
  extend Util::HttpToStatus
16
16
 
17
- # Retrieve the canonical code of this Status.
17
+ # Retrieve the status code of this Status.
18
18
  #
19
19
  # @return [Integer]
20
- attr_reader :canonical_code
20
+ attr_reader :code
21
21
 
22
22
  # Retrieve the description of this Status.
23
23
  #
@@ -26,10 +26,10 @@ module OpenTelemetry
26
26
 
27
27
  # Initialize a Status.
28
28
  #
29
- # @param [Integer] canonical_code One of the canonical status codes below
29
+ # @param [Integer] code One of the status codes below
30
30
  # @param [String] description
31
- def initialize(canonical_code, description: '')
32
- @canonical_code = canonical_code
31
+ def initialize(code, description: '')
32
+ @code = code
33
33
  @description = description
34
34
  end
35
35
 
@@ -37,10 +37,10 @@ module OpenTelemetry
37
37
  #
38
38
  # @return [Boolean]
39
39
  def ok?
40
- @canonical_code != ERROR
40
+ @code != ERROR
41
41
  end
42
42
 
43
- # The following represents the canonical set of status codes of a
43
+ # The following represents the set of status codes of a
44
44
  # finished {Span}
45
45
 
46
46
  # The operation completed successfully.
@@ -8,28 +8,6 @@ module OpenTelemetry
8
8
  module Trace
9
9
  # No-op implementation of Tracer.
10
10
  class Tracer
11
- CURRENT_SPAN_KEY = Propagation::ContextKeys.current_span_key
12
-
13
- private_constant :CURRENT_SPAN_KEY
14
-
15
- # Returns the current span from the current or provided context
16
- #
17
- # @param [optional Context] context The context to lookup the current
18
- # {Span} from. Defaults to Context.current
19
- def current_span(context = nil)
20
- context ||= Context.current
21
- context.value(CURRENT_SPAN_KEY) || Span::INVALID
22
- end
23
-
24
- # Returns a context containing the span, derived from the optional parent
25
- # context, or the current context if one was not provided.
26
- #
27
- # @param [optional Context] context The context to use as the parent for
28
- # the returned context
29
- def context_with_span(span, parent_context: Context.current)
30
- parent_context.set_value(CURRENT_SPAN_KEY, span)
31
- end
32
-
33
11
  # This is a helper for the default use-case of extending the current trace with a span.
34
12
  #
35
13
  # With this helper:
@@ -38,7 +16,7 @@ module OpenTelemetry
38
16
  #
39
17
  # Equivalent without helper:
40
18
  #
41
- # OpenTelemetry.tracer.with_span(OpenTelemetry.tracer.start_span('do-the-thing')) do ... end
19
+ # OpenTelemetry::Trace.with_span(tracer.start_span('do-the-thing')) do ... end
42
20
  #
43
21
  # On exit, the Span that was active before calling this method will be reactivated. If an
44
22
  # exception occurs during the execution of the provided block, it will be recorded on the
@@ -48,7 +26,7 @@ module OpenTelemetry
48
26
  def in_span(name, attributes: nil, links: nil, start_timestamp: nil, kind: nil, with_parent: nil)
49
27
  span = nil
50
28
  span = start_span(name, attributes: attributes, links: links, start_timestamp: start_timestamp, kind: kind, with_parent: with_parent)
51
- with_span(span) { |s, c| yield s, c }
29
+ Trace.with_span(span) { |s, c| yield s, c }
52
30
  rescue Exception => e # rubocop:disable Lint/RescueException
53
31
  span&.record_exception(e)
54
32
  span&.status = Status.new(Status::ERROR,
@@ -58,17 +36,6 @@ module OpenTelemetry
58
36
  span&.finish
59
37
  end
60
38
 
61
- # Activates/deactivates the Span within the current Context, which makes the "current span"
62
- # available implicitly.
63
- #
64
- # On exit, the Span that was active before calling this method will be reactivated.
65
- #
66
- # @param [Span] span the span to activate
67
- # @yield [span, context] yields span and a context containing the span to the block.
68
- def with_span(span)
69
- Context.with_value(CURRENT_SPAN_KEY, span) { |c, s| yield s, c }
70
- end
71
-
72
39
  def start_root_span(name, attributes: nil, links: nil, start_timestamp: nil, kind: nil)
73
40
  Span.new
74
41
  end
@@ -82,7 +49,7 @@ module OpenTelemetry
82
49
  #
83
50
  # @return [Span]
84
51
  def start_span(name, with_parent: nil, attributes: nil, links: nil, start_timestamp: nil, kind: nil)
85
- span_context = current_span(with_parent).context
52
+ span_context = OpenTelemetry::Trace.current_span(with_parent).context
86
53
 
87
54
  if span_context.valid?
88
55
  Span.new(span_context: span_context)
@@ -6,5 +6,5 @@
6
6
 
7
7
  module OpenTelemetry
8
8
  ## Current OpenTelemetry version
9
- VERSION = '0.7.0'
9
+ VERSION = '0.8.0'
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.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-08 00:00:00.000000000 Z
11
+ date: 2020-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ipsa
@@ -178,7 +178,6 @@ files:
178
178
  - lib/opentelemetry/trace.rb
179
179
  - lib/opentelemetry/trace/link.rb
180
180
  - lib/opentelemetry/trace/propagation.rb
181
- - lib/opentelemetry/trace/propagation/context_keys.rb
182
181
  - lib/opentelemetry/trace/propagation/trace_context.rb
183
182
  - lib/opentelemetry/trace/propagation/trace_context/text_map_extractor.rb
184
183
  - lib/opentelemetry/trace/propagation/trace_context/text_map_injector.rb
@@ -195,7 +194,11 @@ files:
195
194
  homepage: https://github.com/open-telemetry/opentelemetry-ruby
196
195
  licenses:
197
196
  - Apache-2.0
198
- metadata: {}
197
+ metadata:
198
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-api/v0.8.0/file.CHANGELOG.html
199
+ source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/master/api
200
+ bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
201
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-api/v0.8.0
199
202
  post_install_message:
200
203
  rdoc_options: []
201
204
  require_paths:
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright 2019 OpenTelemetry Authors
4
- #
5
- # SPDX-License-Identifier: Apache-2.0
6
-
7
- module OpenTelemetry
8
- module Trace
9
- module Propagation
10
- # Contains the keys used to index the current span, or extracted span
11
- # context in a {Context} instance
12
- module ContextKeys
13
- extend self
14
-
15
- EXTRACTED_SPAN_CONTEXT_KEY = Context.create_key('extracted-span-context')
16
- CURRENT_SPAN_KEY = Context.create_key('current-span')
17
- private_constant :EXTRACTED_SPAN_CONTEXT_KEY, :CURRENT_SPAN_KEY
18
-
19
- # Returns the context key that an extracted span context is indexed by
20
- #
21
- # @return [Context::Key]
22
- def extracted_span_context_key
23
- EXTRACTED_SPAN_CONTEXT_KEY
24
- end
25
-
26
- # Returns the context key that the current span is indexed by
27
- #
28
- # @return [Context::Key]
29
- def current_span_key
30
- CURRENT_SPAN_KEY
31
- end
32
- end
33
- end
34
- end
35
- end