opentelemetry-api 0.10.0 → 0.11.0
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/LICENSE +1 -1
- data/lib/opentelemetry-api.rb +1 -1
- data/lib/opentelemetry.rb +1 -1
- data/lib/opentelemetry/baggage.rb +1 -1
- data/lib/opentelemetry/baggage/builder.rb +1 -1
- data/lib/opentelemetry/baggage/manager.rb +1 -1
- data/lib/opentelemetry/baggage/propagation.rb +1 -1
- data/lib/opentelemetry/baggage/propagation/context_keys.rb +1 -1
- data/lib/opentelemetry/baggage/propagation/text_map_extractor.rb +1 -1
- data/lib/opentelemetry/baggage/propagation/text_map_injector.rb +1 -1
- data/lib/opentelemetry/context.rb +1 -1
- data/lib/opentelemetry/context/key.rb +1 -1
- data/lib/opentelemetry/context/propagation.rb +1 -1
- data/lib/opentelemetry/context/propagation/composite_propagator.rb +1 -1
- data/lib/opentelemetry/context/propagation/default_getter.rb +1 -1
- data/lib/opentelemetry/context/propagation/default_setter.rb +1 -1
- data/lib/opentelemetry/context/propagation/noop_extractor.rb +1 -1
- data/lib/opentelemetry/context/propagation/noop_injector.rb +1 -1
- data/lib/opentelemetry/context/propagation/propagation.rb +1 -1
- data/lib/opentelemetry/context/propagation/propagator.rb +1 -1
- data/lib/opentelemetry/error.rb +1 -1
- data/lib/opentelemetry/instrumentation.rb +1 -1
- data/lib/opentelemetry/instrumentation/base.rb +1 -1
- data/lib/opentelemetry/instrumentation/registry.rb +2 -2
- data/lib/opentelemetry/metrics.rb +1 -1
- data/lib/opentelemetry/metrics/handles.rb +1 -1
- data/lib/opentelemetry/metrics/instruments.rb +1 -1
- data/lib/opentelemetry/metrics/meter.rb +1 -1
- data/lib/opentelemetry/metrics/meter_provider.rb +1 -1
- data/lib/opentelemetry/trace.rb +2 -1
- data/lib/opentelemetry/trace/link.rb +1 -1
- data/lib/opentelemetry/trace/propagation.rb +1 -1
- data/lib/opentelemetry/trace/propagation/trace_context.rb +1 -1
- data/lib/opentelemetry/trace/propagation/trace_context/text_map_extractor.rb +3 -5
- data/lib/opentelemetry/trace/propagation/trace_context/text_map_injector.rb +2 -2
- data/lib/opentelemetry/trace/propagation/trace_context/trace_parent.rb +1 -1
- data/lib/opentelemetry/trace/span.rb +1 -1
- data/lib/opentelemetry/trace/span_context.rb +3 -3
- data/lib/opentelemetry/trace/span_kind.rb +1 -1
- data/lib/opentelemetry/trace/status.rb +1 -1
- data/lib/opentelemetry/trace/trace_flags.rb +1 -1
- data/lib/opentelemetry/trace/tracer.rb +1 -1
- data/lib/opentelemetry/trace/tracer_provider.rb +1 -1
- data/lib/opentelemetry/trace/tracestate.rb +158 -0
- data/lib/opentelemetry/trace/util/http_to_status.rb +1 -1
- data/lib/opentelemetry/version.rb +2 -2
- metadata +5 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5b7fecd268c9efe43c452847e831bf1456d502c8531e589691b865bd1264b53f
|
|
4
|
+
data.tar.gz: d8b33160247e5d8c94b248f607b621333112cda1a6fc7af00ce68ef1caed1cb0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 06e4bda488c11623f710a74288de802c8af5fbb879bb52edbd003dd10159ff443bde7c9d6f511915e0ecdaaf54244f7b8897c4137b466bd11bdc87f51b87d337
|
|
7
|
+
data.tar.gz: 8466f42436e3e89e0a4339699887b3eae95551dd601f66be5b3f9ffc76f3aaad2075e95cb6aeed945422e0ea998148b769dc2781d3095a67c2051c2cc52068a7
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Release History: opentelemetry-api
|
|
2
2
|
|
|
3
|
+
### v0.11.0 / 2020-12-11
|
|
4
|
+
|
|
5
|
+
* BREAKING CHANGE: Implement tracestate
|
|
6
|
+
|
|
7
|
+
* ADDED: Implement tracestate
|
|
8
|
+
* FIXED: Missing white space from install messages
|
|
9
|
+
* FIXED: Copyright comments to not reference year
|
|
10
|
+
|
|
3
11
|
### v0.10.0 / 2020-12-03
|
|
4
12
|
|
|
5
13
|
* (No significant changes)
|
data/LICENSE
CHANGED
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
|
187
187
|
identification within third-party archives.
|
|
188
188
|
|
|
189
|
-
Copyright
|
|
189
|
+
Copyright The OpenTelemetry Authors
|
|
190
190
|
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
192
|
you may not use this file except in compliance with the License.
|
data/lib/opentelemetry-api.rb
CHANGED
data/lib/opentelemetry.rb
CHANGED
data/lib/opentelemetry/error.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -79,7 +79,7 @@ module OpenTelemetry
|
|
|
79
79
|
OpenTelemetry.logger.warn "Instrumentation: #{instrumentation.name} failed to install"
|
|
80
80
|
end
|
|
81
81
|
rescue => e # rubocop:disable Style/RescueStandardError
|
|
82
|
-
OpenTelemetry.logger.warn "Instrumentation: #{instrumentation.name} unhandled exception" \
|
|
82
|
+
OpenTelemetry.logger.warn "Instrumentation: #{instrumentation.name} unhandled exception " \
|
|
83
83
|
"during install #{e}: #{e.backtrace}"
|
|
84
84
|
end
|
|
85
85
|
end
|
data/lib/opentelemetry/trace.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -76,6 +76,7 @@ end
|
|
|
76
76
|
|
|
77
77
|
require 'opentelemetry/trace/link'
|
|
78
78
|
require 'opentelemetry/trace/trace_flags'
|
|
79
|
+
require 'opentelemetry/trace/tracestate'
|
|
79
80
|
require 'opentelemetry/trace/span_context'
|
|
80
81
|
require 'opentelemetry/trace/span_kind'
|
|
81
82
|
require 'opentelemetry/trace/span'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
module OpenTelemetry
|
|
@@ -37,10 +37,8 @@ module OpenTelemetry
|
|
|
37
37
|
# context if parsing fails.
|
|
38
38
|
def extract(carrier, context, &getter)
|
|
39
39
|
getter ||= default_getter
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
tracestate = getter.call(carrier, @tracestate_key)
|
|
40
|
+
tp = TraceParent.from_string(getter.call(carrier, @traceparent_key))
|
|
41
|
+
tracestate = Tracestate.from_string(getter.call(carrier, @tracestate_key))
|
|
44
42
|
|
|
45
43
|
span_context = Trace::SpanContext.new(trace_id: tp.trace_id,
|
|
46
44
|
span_id: tp.span_id,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
module OpenTelemetry
|
|
@@ -37,7 +37,7 @@ module OpenTelemetry
|
|
|
37
37
|
|
|
38
38
|
setter ||= DEFAULT_SETTER
|
|
39
39
|
setter.call(carrier, @traceparent_key, TraceParent.from_span_context(span_context).to_s)
|
|
40
|
-
setter.call(carrier, @tracestate_key, span_context.tracestate) unless span_context.tracestate.
|
|
40
|
+
setter.call(carrier, @tracestate_key, span_context.tracestate.to_s) unless span_context.tracestate.empty?
|
|
41
41
|
|
|
42
42
|
carrier
|
|
43
43
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -18,14 +18,14 @@ module OpenTelemetry
|
|
|
18
18
|
# @param [optional String] trace_id The trace ID associated with a {Span}.
|
|
19
19
|
# @param [optional String] span_id The span ID associated with a {Span}.
|
|
20
20
|
# @param [optional TraceFlags] trace_flags The trace flags associated with a {Span}.
|
|
21
|
-
# @param [optional
|
|
21
|
+
# @param [optional Tracestate] tracestate The tracestate associated with a {Span}. May be nil.
|
|
22
22
|
# @param [optional Boolean] remote Whether the {SpanContext} was extracted from the wire.
|
|
23
23
|
# @return [SpanContext]
|
|
24
24
|
def initialize(
|
|
25
25
|
trace_id: Trace.generate_trace_id,
|
|
26
26
|
span_id: Trace.generate_span_id,
|
|
27
27
|
trace_flags: TraceFlags::DEFAULT,
|
|
28
|
-
tracestate:
|
|
28
|
+
tracestate: Tracestate::DEFAULT,
|
|
29
29
|
remote: false
|
|
30
30
|
)
|
|
31
31
|
@trace_id = trace_id
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
|
+
#
|
|
5
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
|
|
7
|
+
module OpenTelemetry
|
|
8
|
+
module Trace
|
|
9
|
+
# Tracestate is a part of SpanContext, represented by an immutable list of
|
|
10
|
+
# string key/value pairs and formally defined by the W3C Trace Context
|
|
11
|
+
# specification https://www.w3.org/TR/trace-context/
|
|
12
|
+
class Tracestate
|
|
13
|
+
class << self
|
|
14
|
+
private :new # rubocop:disable Style/AccessModifierDeclarations
|
|
15
|
+
|
|
16
|
+
# Returns a newly created Tracestate parsed from the header provided.
|
|
17
|
+
#
|
|
18
|
+
# @param [String] header Encoding of the tracestate header defined by
|
|
19
|
+
# the W3C Trace Context specification https://www.w3.org/TR/trace-context/
|
|
20
|
+
# @return [Tracestate] A new Tracestate instance or DEFAULT
|
|
21
|
+
def from_string(header) # rubocop:disable Metrics/CyclomaticComplexity:
|
|
22
|
+
return DEFAULT if header.nil? || header.empty?
|
|
23
|
+
|
|
24
|
+
hash = header.split(',').each_with_object({}) do |member, memo|
|
|
25
|
+
member.strip!
|
|
26
|
+
kv = member.split('=')
|
|
27
|
+
k, v = *kv
|
|
28
|
+
next unless kv.length == 2 && VALID_KEY.match?(k) && VALID_VALUE.match?(v)
|
|
29
|
+
|
|
30
|
+
memo[k] = v
|
|
31
|
+
end
|
|
32
|
+
return DEFAULT if hash.empty?
|
|
33
|
+
|
|
34
|
+
new(hash)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Returns a Tracestate created from a Hash.
|
|
38
|
+
#
|
|
39
|
+
# @param [Hash<String, String>] hash Key-value pairs to store in the
|
|
40
|
+
# Tracestate. Keys and values are validated against the W3C Trace
|
|
41
|
+
# Context specification, and any invalid members are logged at
|
|
42
|
+
# DEBUG level and dropped.
|
|
43
|
+
# @return [Tracestate] A new Tracestate instance or DEFAULT
|
|
44
|
+
def from_hash(hash)
|
|
45
|
+
hash = hash.select do |k, v|
|
|
46
|
+
valid = VALID_KEY.match?(k) && VALID_VALUE.match?(v)
|
|
47
|
+
OpenTelemetry.logger.debug("Invalid Tracestate member - #{k} : #{v}") unless valid
|
|
48
|
+
valid
|
|
49
|
+
end
|
|
50
|
+
new(hash)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# @api private
|
|
54
|
+
# Returns a new Tracestate created from the Hash provided. This
|
|
55
|
+
# skips validation of the keys and values, assuming they are already
|
|
56
|
+
# valid.
|
|
57
|
+
# This method is intended only for the use of instance methods in
|
|
58
|
+
# this class.
|
|
59
|
+
def create(hash)
|
|
60
|
+
new(hash)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
MAX_MEMBER_COUNT = 32 # Defined by https://www.w3.org/TR/trace-context/
|
|
65
|
+
VALID_KEY = Regexp.union(%r(^[a-z][a-z0-9_\-*/]{,255}$), %r(^[a-z0-9][a-z0-9_\-*/]{,240}@[a-z][a-z0-9_\-*/]{,13}$)).freeze
|
|
66
|
+
VALID_VALUE = /^[ -~&&[^,=]]{,255}[!-~&&[^,=]]$/.freeze
|
|
67
|
+
private_constant(:MAX_MEMBER_COUNT, :VALID_KEY, :VALID_VALUE)
|
|
68
|
+
|
|
69
|
+
# @api private
|
|
70
|
+
# The constructor is private and only for use internally by the class.
|
|
71
|
+
# Users should use the {from_hash} or {from_string} factory methods to
|
|
72
|
+
# obtain a {Tracestate} instance.
|
|
73
|
+
#
|
|
74
|
+
# @param [Hash<String, String>] hash Key-value pairs
|
|
75
|
+
# @return [Tracestate]
|
|
76
|
+
def initialize(hash)
|
|
77
|
+
excess = hash.size - MAX_MEMBER_COUNT
|
|
78
|
+
hash = Hash[hash.drop(excess)] if excess.positive?
|
|
79
|
+
@hash = hash.freeze
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Returns the value associated with the given key, or nil if the key
|
|
83
|
+
# is not present.
|
|
84
|
+
#
|
|
85
|
+
# @param [String] key The key to lookup.
|
|
86
|
+
# @return [String] The value associated with the key, or nil.
|
|
87
|
+
def value(key)
|
|
88
|
+
@hash[key]
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
alias [] value
|
|
92
|
+
|
|
93
|
+
# Adds a new key/value pair or updates an existing value for a given key.
|
|
94
|
+
# Keys and values are validated against the W3C Trace Context
|
|
95
|
+
# specification, and any invalid members are logged at DEBUG level and
|
|
96
|
+
# ignored.
|
|
97
|
+
#
|
|
98
|
+
# @param [String] key The key to add or update.
|
|
99
|
+
# @param [String] value The value to add or update.
|
|
100
|
+
# @return [Tracestate] self, if unchanged, or a new Tracestate containing
|
|
101
|
+
# the new or updated key/value pair.
|
|
102
|
+
def set_value(key, value)
|
|
103
|
+
return self unless VALID_KEY.match?(key) && VALID_VALUE.match?(value)
|
|
104
|
+
|
|
105
|
+
h = Hash[@hash]
|
|
106
|
+
h[key] = value
|
|
107
|
+
self.class.create(h)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Deletes the key/value pair associated with the given key.
|
|
111
|
+
#
|
|
112
|
+
# @param [String] key The key to remove.
|
|
113
|
+
# @return [Tracestate] self, if unchanged, or a new Tracestate without
|
|
114
|
+
# the specified key.
|
|
115
|
+
def delete(key)
|
|
116
|
+
return self unless @hash.key?(key)
|
|
117
|
+
|
|
118
|
+
h = Hash[@hash]
|
|
119
|
+
h.delete(key)
|
|
120
|
+
self.class.create(h)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# Returns this Tracestate encoded according to the W3C Trace Context
|
|
124
|
+
# specification https://www.w3.org/TR/trace-context/
|
|
125
|
+
#
|
|
126
|
+
# @return [String] this Tracestate encoded as a string.
|
|
127
|
+
def to_s
|
|
128
|
+
@hash.inject(+'') do |memo, (k, v)|
|
|
129
|
+
memo << k << '=' << v << ','
|
|
130
|
+
end.chop! || ''
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Returns this Tracestate as a Hash.
|
|
134
|
+
#
|
|
135
|
+
# @return [Hash] the members of this Tracestate
|
|
136
|
+
def to_h
|
|
137
|
+
@hash.dup
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Returns true if this Tracestate is empty.
|
|
141
|
+
#
|
|
142
|
+
# @return [Boolean] true if this Tracestate is empty, else false.
|
|
143
|
+
def empty?
|
|
144
|
+
@hash.empty?
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# Returns true if this Tracestate equals other.
|
|
148
|
+
#
|
|
149
|
+
# @param [Tracestate] other The Tracestate for comparison.
|
|
150
|
+
# @return [Boolean] true if this Tracestate == other, else false.
|
|
151
|
+
def ==(other)
|
|
152
|
+
@hash == other.to_h
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
DEFAULT = new({})
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
7
7
|
module OpenTelemetry
|
|
8
8
|
## Current OpenTelemetry version
|
|
9
|
-
VERSION = '0.
|
|
9
|
+
VERSION = '0.11.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.
|
|
4
|
+
version: 0.11.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-12-
|
|
11
|
+
date: 2020-12-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: benchmark-ipsa
|
|
@@ -189,16 +189,17 @@ files:
|
|
|
189
189
|
- lib/opentelemetry/trace/trace_flags.rb
|
|
190
190
|
- lib/opentelemetry/trace/tracer.rb
|
|
191
191
|
- lib/opentelemetry/trace/tracer_provider.rb
|
|
192
|
+
- lib/opentelemetry/trace/tracestate.rb
|
|
192
193
|
- lib/opentelemetry/trace/util/http_to_status.rb
|
|
193
194
|
- lib/opentelemetry/version.rb
|
|
194
195
|
homepage: https://github.com/open-telemetry/opentelemetry-ruby
|
|
195
196
|
licenses:
|
|
196
197
|
- Apache-2.0
|
|
197
198
|
metadata:
|
|
198
|
-
changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-api/v0.
|
|
199
|
+
changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-api/v0.11.0/file.CHANGELOG.html
|
|
199
200
|
source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/master/api
|
|
200
201
|
bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
|
|
201
|
-
documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-api/v0.
|
|
202
|
+
documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-api/v0.11.0
|
|
202
203
|
post_install_message:
|
|
203
204
|
rdoc_options: []
|
|
204
205
|
require_paths:
|