opentelemetry-api 0.10.0 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +27 -0
  3. data/LICENSE +1 -1
  4. data/README.md +2 -2
  5. data/lib/opentelemetry-api.rb +1 -1
  6. data/lib/opentelemetry.rb +22 -4
  7. data/lib/opentelemetry/baggage.rb +1 -1
  8. data/lib/opentelemetry/baggage/builder.rb +1 -1
  9. data/lib/opentelemetry/baggage/manager.rb +1 -1
  10. data/lib/opentelemetry/baggage/propagation.rb +3 -23
  11. data/lib/opentelemetry/baggage/propagation/context_keys.rb +1 -1
  12. data/lib/opentelemetry/baggage/propagation/text_map_extractor.rb +13 -16
  13. data/lib/opentelemetry/baggage/propagation/text_map_injector.rb +13 -16
  14. data/lib/opentelemetry/context.rb +1 -1
  15. data/lib/opentelemetry/context/key.rb +1 -1
  16. data/lib/opentelemetry/context/propagation.rb +29 -4
  17. data/lib/opentelemetry/context/propagation/composite_propagator.rb +11 -12
  18. data/lib/opentelemetry/context/propagation/noop_extractor.rb +2 -2
  19. data/lib/opentelemetry/context/propagation/noop_injector.rb +1 -1
  20. data/lib/opentelemetry/context/propagation/propagator.rb +11 -11
  21. data/lib/opentelemetry/context/propagation/rack_env_getter.rb +46 -0
  22. data/lib/opentelemetry/context/propagation/text_map_getter.rb +27 -0
  23. data/lib/opentelemetry/context/propagation/text_map_setter.rb +21 -0
  24. data/lib/opentelemetry/error.rb +1 -1
  25. data/lib/opentelemetry/instrumentation.rb +1 -1
  26. data/lib/opentelemetry/instrumentation/base.rb +1 -1
  27. data/lib/opentelemetry/instrumentation/registry.rb +2 -3
  28. data/lib/opentelemetry/metrics.rb +1 -1
  29. data/lib/opentelemetry/metrics/handles.rb +1 -1
  30. data/lib/opentelemetry/metrics/instruments.rb +1 -1
  31. data/lib/opentelemetry/metrics/meter.rb +1 -1
  32. data/lib/opentelemetry/metrics/meter_provider.rb +1 -1
  33. data/lib/opentelemetry/trace.rb +15 -4
  34. data/lib/opentelemetry/trace/link.rb +1 -1
  35. data/lib/opentelemetry/trace/propagation.rb +1 -1
  36. data/lib/opentelemetry/trace/propagation/trace_context.rb +5 -24
  37. data/lib/opentelemetry/trace/propagation/trace_context/text_map_extractor.rb +14 -21
  38. data/lib/opentelemetry/trace/propagation/trace_context/text_map_injector.rb +14 -19
  39. data/lib/opentelemetry/trace/propagation/trace_context/trace_parent.rb +1 -1
  40. data/lib/opentelemetry/trace/span.rb +6 -2
  41. data/lib/opentelemetry/trace/span_context.rb +3 -3
  42. data/lib/opentelemetry/trace/span_kind.rb +1 -1
  43. data/lib/opentelemetry/trace/status.rb +1 -1
  44. data/lib/opentelemetry/trace/trace_flags.rb +1 -1
  45. data/lib/opentelemetry/trace/tracer.rb +1 -1
  46. data/lib/opentelemetry/trace/tracer_provider.rb +1 -1
  47. data/lib/opentelemetry/trace/tracestate.rb +158 -0
  48. data/lib/opentelemetry/trace/util/http_to_status.rb +1 -1
  49. data/lib/opentelemetry/version.rb +2 -2
  50. metadata +9 -8
  51. data/lib/opentelemetry/context/propagation/default_getter.rb +0 -26
  52. data/lib/opentelemetry/context/propagation/default_setter.rb +0 -26
  53. data/lib/opentelemetry/context/propagation/propagation.rb +0 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2cee7fab7654059566d26d776b3813fbf526152804e861788d4c432c1167eb51
4
- data.tar.gz: e1fb0ea50cf900e5caa840ddbc7031e083d4ac91250befab42036e7be93ab83d
3
+ metadata.gz: 23c4a8602afe2513fff72ec29784b696ae41eccee8c3b25eb4cf48081856b22b
4
+ data.tar.gz: 17507ad2d0dbb697e6f1bb8cbf133d0baa01234d7383d9bb726b0d5fb11c4cb3
5
5
  SHA512:
6
- metadata.gz: b0bdfb487a5d1031c9f5981ace74e9535e4bd871059ab7f43070e451c4ef598361dde7c15644a31ba9b4f829f578fdb520568f484250f57ce31e686f0005834d
7
- data.tar.gz: 3c247ff76a50b9ba58ac6ce3b2f534a86c2792181323c43c5407bc4f13afa17273651eee5eebe808d419b266f7fc94d3cf29a39e05d3b387dd7fbed96819126e
6
+ metadata.gz: 5c37bb2d8a469bda44a121bfca1218380553cbc66d24e8001df4c2e67d93f9b474335962095b77a28e6de3c53f34af98ea18b12a3335cdd45d0b04d50510b2be
7
+ data.tar.gz: 3980934cdfdb34e96eb8215a9ebb26eb0b3d096be3e545837ee9d6595ff5e114ea680e692ccc7d0af2d89d8a4550e180671e4d92c5266b6a445c45fc991e0602
data/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Release History: opentelemetry-api
2
2
 
3
+ ### v0.14.0 / 2021-02-03
4
+
5
+ * BREAKING CHANGE: Replace getter and setter callables and remove rack specific propagators
6
+
7
+ * ADDED: Replace getter and setter callables and remove rack specific propagators
8
+
9
+ ### v0.13.0 / 2021-01-29
10
+
11
+ * ADDED: Add optional attributes to record_exception
12
+ * FIXED: Small test fixes.
13
+
14
+ ### v0.12.1 / 2021-01-13
15
+
16
+ * FIXED: Eliminate warning about Random::DEFAULT on Ruby 3.0
17
+
18
+ ### v0.12.0 / 2020-12-24
19
+
20
+ * ADDED: Structured error handling
21
+
22
+ ### v0.11.0 / 2020-12-11
23
+
24
+ * BREAKING CHANGE: Implement tracestate
25
+
26
+ * ADDED: Implement tracestate
27
+ * FIXED: Missing white space from install messages
28
+ * FIXED: Copyright comments to not reference year
29
+
3
30
  ### v0.10.0 / 2020-12-03
4
31
 
5
32
  * (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 2020 OpenTelemetry Authors
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/README.md CHANGED
@@ -59,8 +59,8 @@ The `opentelemetry-api` gem is distributed under the Apache 2.0 license. See [LI
59
59
  [opentelemetry-home]: https://opentelemetry.io
60
60
  [bundler-home]: https://bundler.io
61
61
  [repo-github]: https://github.com/open-telemetry/opentelemetry-ruby
62
- [license-github]: https://github.com/open-telemetry/opentelemetry-ruby/blob/master/LICENSE
63
- [examples-github]: https://github.com/open-telemetry/opentelemetry-ruby/tree/master/examples
62
+ [license-github]: https://github.com/open-telemetry/opentelemetry-ruby/blob/main/LICENSE
63
+ [examples-github]: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/examples
64
64
  [ruby-sig]: https://github.com/open-telemetry/community#ruby-sig
65
65
  [community-meetings]: https://github.com/open-telemetry/community#community-meetings
66
66
  [ruby-gitter]: https://gitter.im/open-telemetry/opentelemetry-ruby
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2019 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
data/lib/opentelemetry.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2020 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -22,13 +22,28 @@ require 'opentelemetry/version'
22
22
  module OpenTelemetry
23
23
  extend self
24
24
 
25
- attr_writer :tracer_provider, :meter_provider, :baggage, :logger
25
+ attr_writer :tracer_provider, :meter_provider, :propagation, :baggage,
26
+ :logger, :error_handler
26
27
 
27
28
  # @return [Object, Logger] configured Logger or a default STDOUT Logger.
28
29
  def logger
29
30
  @logger ||= Logger.new(STDOUT, level: ENV['OTEL_LOG_LEVEL'] || Logger::INFO)
30
31
  end
31
32
 
33
+ # @return [Callable] configured error handler or a default that logs the
34
+ # exception and message at ERROR level.
35
+ def error_handler
36
+ @error_handler ||= ->(exception: nil, message: nil) { logger.error("OpenTelemetry error: #{[message, exception&.message].compact.join(' - ')}") }
37
+ end
38
+
39
+ # Handles an error by calling the configured error_handler.
40
+ #
41
+ # @param [optional Exception] exception The exception to be handled
42
+ # @param [optional String] message An error message.
43
+ def handle_error(exception: nil, message: nil)
44
+ error_handler.call(exception: exception, message: message)
45
+ end
46
+
32
47
  # @return [Object, Trace::TracerProvider] registered tracer provider or a
33
48
  # default no-op implementation of the tracer provider.
34
49
  def tracer_provider
@@ -54,8 +69,11 @@ module OpenTelemetry
54
69
  @baggage ||= Baggage::Manager.new
55
70
  end
56
71
 
57
- # @return [Context::Propagation::Propagation] an instance of the propagation API
72
+ # @return [Context::Propagation::Propagator] a propagator instance
58
73
  def propagation
59
- @propagation ||= Context::Propagation::Propagation.new
74
+ @propagation ||= Context::Propagation::Propagator.new(
75
+ Context::Propagation::NoopInjector.new,
76
+ Context::Propagation::NoopExtractor.new
77
+ )
60
78
  end
61
79
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2019 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2019 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2019 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2019 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -15,17 +15,11 @@ module OpenTelemetry
15
15
  module Propagation
16
16
  extend self
17
17
 
18
+ BAGGAGE_KEY = 'baggage'
18
19
  TEXT_MAP_EXTRACTOR = TextMapExtractor.new
19
20
  TEXT_MAP_INJECTOR = TextMapInjector.new
20
- RACK_EXTRACTOR = TextMapExtractor.new(
21
- baggage_key: 'HTTP_BAGGAGE'
22
- )
23
- RACK_INJECTOR = TextMapInjector.new(
24
- baggage_key: 'HTTP_BAGGAGE'
25
- )
26
21
 
27
- private_constant :TEXT_MAP_INJECTOR, :TEXT_MAP_EXTRACTOR, :RACK_INJECTOR,
28
- :RACK_EXTRACTOR
22
+ private_constant :BAGGAGE_KEY, :TEXT_MAP_INJECTOR, :TEXT_MAP_EXTRACTOR
29
23
 
30
24
  # Returns an extractor that extracts context using the W3C Baggage
31
25
  # format
@@ -38,20 +32,6 @@ module OpenTelemetry
38
32
  def text_map_extractor
39
33
  TEXT_MAP_EXTRACTOR
40
34
  end
41
-
42
- # Returns an extractor that extracts context using the W3C Baggage
43
- # format with Rack normalized keys (upcased and prefixed with
44
- # HTTP_)
45
- def rack_injector
46
- RACK_INJECTOR
47
- end
48
-
49
- # Returns an injector that injects context using the W3C Baggage
50
- # format with Rack normalized keys (upcased and prefixed with
51
- # HTTP_)
52
- def rack_extractor
53
- RACK_EXTRACTOR
54
- end
55
35
  end
56
36
  end
57
37
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2019 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2019 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -11,16 +11,15 @@ module OpenTelemetry
11
11
  module Propagation
12
12
  # Extracts baggage from carriers in the W3C Baggage format
13
13
  class TextMapExtractor
14
- include Context::Propagation::DefaultGetter
15
-
16
14
  # Returns a new TextMapExtractor that extracts context using the specified
17
- # header key
15
+ # getter
18
16
  #
19
- # @param [String] baggage_key The baggage header
20
- # key used in the carrier
17
+ # @param [optional Getter] default_getter The default getter used to read
18
+ # headers from a carrier during extract. Defaults to a
19
+ # {OpenTelemetry::Context::Propagation::TextMapGetter} instance.
21
20
  # @return [TextMapExtractor]
22
- def initialize(baggage_key: 'baggage')
23
- @baggage_key = baggage_key
21
+ def initialize(default_getter = Context::Propagation.text_map_getter)
22
+ @default_getter = default_getter
24
23
  end
25
24
 
26
25
  # Extract remote baggage from the supplied carrier.
@@ -28,16 +27,14 @@ module OpenTelemetry
28
27
  #
29
28
  # @param [Carrier] carrier The carrier to get the header from
30
29
  # @param [Context] context The context to be updated with extracted baggage
31
- # @param [optional Callable] getter An optional callable that takes a carrier and a key and
32
- # returns the value associated with the key. If omitted the default getter will be used
33
- # which expects the carrier to respond to [] and []=.
34
- # @yield [Carrier, String] if an optional getter is provided, extract will yield the carrier
35
- # and the header key to the getter.
30
+ # @param [optional Getter] getter If the optional getter is provided, it
31
+ # will be used to read the header from the carrier, otherwise the default
32
+ # getter will be used.
36
33
  # @return [Context] context updated with extracted baggage, or the original context
37
34
  # if extraction fails
38
- def extract(carrier, context, &getter)
39
- getter ||= default_getter
40
- header = getter.call(carrier, @baggage_key)
35
+ def extract(carrier, context, getter = nil)
36
+ getter ||= @default_getter
37
+ header = getter.get(carrier, BAGGAGE_KEY)
41
38
 
42
39
  entries = header.gsub(/\s/, '').split(',')
43
40
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2019 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -11,33 +11,30 @@ module OpenTelemetry
11
11
  module Propagation
12
12
  # Injects baggage using the W3C Baggage format
13
13
  class TextMapInjector
14
- include Context::Propagation::DefaultSetter
15
-
16
14
  # Returns a new TextMapInjector that injects context using the specified
17
- # header key
15
+ # setter
18
16
  #
19
- # @param [String] baggage_key The baggage header
20
- # key used in the carrier
17
+ # @param [optional Setter] default_setter The default setter used to
18
+ # write context into a carrier during inject. Defaults to a
19
+ # {OpenTelemetry::Context::Propagation::TextMapSetter} instance.
21
20
  # @return [TextMapInjector]
22
- def initialize(baggage_key: 'baggage')
23
- @baggage_key = baggage_key
21
+ def initialize(default_setter = Context::Propagation.text_map_setter)
22
+ @default_setter = default_setter
24
23
  end
25
24
 
26
25
  # Inject in-process baggage into the supplied carrier.
27
26
  #
28
27
  # @param [Carrier] carrier The carrier to inject baggage into
29
28
  # @param [Context] context The context to read baggage from
30
- # @param [optional Callable] getter An optional callable that takes a carrier and a key and
31
- # returns the value associated with the key. If omitted the default getter will be used
32
- # which expects the carrier to respond to [] and []=.
33
- # @yield [Carrier, String] if an optional getter is provided, inject will yield the carrier
34
- # and the header key to the getter.
29
+ # @param [optional Setter] setter If the optional setter is provided, it
30
+ # will be used to write context into the carrier, otherwise the default
31
+ # setter will be used.
35
32
  # @return [Object] carrier with injected baggage
36
- def inject(carrier, context, &setter)
33
+ def inject(carrier, context, setter = nil)
37
34
  return carrier unless (baggage = context[ContextKeys.baggage_key]) && !baggage.empty?
38
35
 
39
- setter ||= default_setter
40
- setter.call(carrier, @baggage_key, encode(baggage))
36
+ setter ||= @default_setter
37
+ setter.set(carrier, BAGGAGE_KEY, encode(baggage))
41
38
 
42
39
  carrier
43
40
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2019 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2019 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -1,22 +1,47 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2019 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
7
7
  require 'opentelemetry/context/propagation/composite_propagator'
8
- require 'opentelemetry/context/propagation/default_getter'
9
- require 'opentelemetry/context/propagation/default_setter'
10
8
  require 'opentelemetry/context/propagation/noop_extractor'
11
9
  require 'opentelemetry/context/propagation/noop_injector'
12
- require 'opentelemetry/context/propagation/propagation'
13
10
  require 'opentelemetry/context/propagation/propagator'
11
+ require 'opentelemetry/context/propagation/text_map_getter'
12
+ require 'opentelemetry/context/propagation/text_map_setter'
13
+ require 'opentelemetry/context/propagation/rack_env_getter'
14
14
 
15
15
  module OpenTelemetry
16
16
  class Context
17
17
  # The propagation module contains APIs and utilities to interact with context
18
18
  # and propagate across process boundaries.
19
19
  module Propagation
20
+ extend self
21
+
22
+ TEXT_MAP_GETTER = TextMapGetter.new
23
+ TEXT_MAP_SETTER = TextMapSetter.new
24
+ RACK_ENV_GETTER = RackEnvGetter.new
25
+
26
+ private_constant :TEXT_MAP_GETTER, :TEXT_MAP_SETTER, :RACK_ENV_GETTER
27
+
28
+ # Returns a {TextMapGetter} instance suitable for reading values from a
29
+ # hash-like carrier
30
+ def text_map_getter
31
+ TEXT_MAP_GETTER
32
+ end
33
+
34
+ # Returns a {TextMapSetter} instance suitable for writing values into a
35
+ # hash-like carrier
36
+ def text_map_setter
37
+ TEXT_MAP_SETTER
38
+ end
39
+
40
+ # Returns a {RackEnvGetter} instance suitable for reading values from a
41
+ # Rack environment.
42
+ def rack_env_getter
43
+ RACK_ENV_GETTER
44
+ end
20
45
  end
21
46
  end
22
47
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2020 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -30,15 +30,14 @@ module OpenTelemetry
30
30
  # context into
31
31
  # @param [optional Context] context Context to be injected into carrier.
32
32
  # Defaults to +Context.current+
33
- # @param [optional Callable] setter An optional callable that takes a
34
- # carrier, a key and a value and assigns the key-value pair in the
35
- # carrier. If omitted the default setter will be used which expects
36
- # the carrier to respond to [] and []=.
33
+ # @param [optional Setter] setter If the optional setter is provided, it
34
+ # will be used to write context into the carrier, otherwise the default
35
+ # setter will be used.
37
36
  #
38
37
  # @return [Object] carrier
39
- def inject(carrier, context = Context.current, &setter)
38
+ def inject(carrier, context: Context.current, setter: Context::Propagation.text_map_setter)
40
39
  @injectors.inject(carrier) do |memo, injector|
41
- injector.inject(memo, context, &setter)
40
+ injector.inject(memo, context, setter)
42
41
  rescue => e # rubocop:disable Style/RescueStandardError
43
42
  OpenTelemetry.logger.warn "Error in CompositePropagator#inject #{e.message}"
44
43
  carrier
@@ -53,15 +52,15 @@ module OpenTelemetry
53
52
  # @param [Object] carrier The carrier to extract context from
54
53
  # @param [optional Context] context Context to be updated with the state
55
54
  # extracted from the carrier. Defaults to +Context.current+
56
- # @param [optional Callable] getter An optional callable that takes a carrier and a key and
57
- # returns the value associated with the key. If omitted the default getter will be used
58
- # which expects the carrier to respond to [] and []=.
55
+ # @param [optional Getter] getter If the optional getter is provided, it
56
+ # will be used to read the header from the carrier, otherwise the default
57
+ # getter will be used.
59
58
  #
60
59
  # @return [Context] a new context updated with state extracted from the
61
60
  # carrier
62
- def extract(carrier, context = Context.current, &getter)
61
+ def extract(carrier, context: Context.current, getter: Context::Propagation.text_map_getter)
63
62
  @extractors.inject(context) do |ctx, extractor|
64
- extractor.extract(carrier, ctx, &getter)
63
+ extractor.extract(carrier, ctx, getter)
65
64
  rescue => e # rubocop:disable Style/RescueStandardError
66
65
  OpenTelemetry.logger.warn "Error in CompositePropagator#extract #{e.message}"
67
66
  ctx
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2020 OpenTelemetry Authors
3
+ # Copyright The OpenTelemetry Authors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
@@ -17,7 +17,7 @@ module OpenTelemetry
17
17
  # @param [optional Callable] getter An optional callable that takes a carrier and a key and
18
18
  # and returns the value associated with the key
19
19
  # @return [Context]
20
- def extract(carrier, context, &getter)
20
+ def extract(carrier, context, getter = nil)
21
21
  context
22
22
  end
23
23
  end