opentelemetry-propagator-xray 0.23.0 → 0.24.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e1da8daf17d8e2ce3fa9d56afe8dae170e46859b932a034c8cf9ae461e5c191
|
4
|
+
data.tar.gz: '058cb3d7119ee981fe8fd35329ae85bde2bf0ef4359d71ff9279fa390d416b0f'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2121e1ed83bc4a2a29f4d6561bd50d0fb93d6dee36064cebf4aca1d568bddd24fd0133efb4fce6f769bc1aa1f2da2741df6945d95268ba4b8c0f67ba0ba82073
|
7
|
+
data.tar.gz: bec923bfba589a13089d2e701e7a7819b7e85ebee9b791d28d37974ba49800668960827b281f27db77a5ceba1ad4cf490cf3483efd9939c7f750f33e357b64f4
|
data/CHANGELOG.md
CHANGED
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright OpenTelemetry Authors
|
4
|
+
#
|
5
|
+
# SPDX-License-Identifier: Apache-2.0
|
6
|
+
|
7
|
+
# OpenTelemetry is an open source observability framework, providing a
|
8
|
+
# general-purpose API, SDK, and related tools required for the instrumentation
|
9
|
+
# of cloud-native software, frameworks, and libraries.
|
10
|
+
#
|
11
|
+
# The OpenTelemetry module provides global accessors for telemetry objects.
|
12
|
+
# See the documentation for the `opentelemetry-api` gem for details.
|
13
|
+
module OpenTelemetry
|
14
|
+
# Namespace for OpenTelemetry propagator extension libraries
|
15
|
+
module Propagator
|
16
|
+
# Namespace for OpenTelemetry XRay propagation
|
17
|
+
module XRay
|
18
|
+
# Implementation of AWS X-Ray Trace Header propagation with special handling for
|
19
|
+
# Lambda's _X_AMZN_TRACE_ID environment variable
|
20
|
+
class LambdaTextMapPropagator < TextMapPropagator
|
21
|
+
AWS_TRACE_HEADER_ENV_KEY = '_X_AMZN_TRACE_ID'
|
22
|
+
|
23
|
+
# Extract trace context from the supplied carrier or from Lambda environment variable
|
24
|
+
# If extraction fails, the original context will be returned
|
25
|
+
#
|
26
|
+
# @param [Carrier] carrier The carrier to get the header from
|
27
|
+
# @param [optional Context] context Context to be updated with the trace context
|
28
|
+
# extracted from the carrier. Defaults to +Context.current+.
|
29
|
+
# @param [optional Getter] getter If the optional getter is provided, it
|
30
|
+
# will be used to read the header from the carrier, otherwise the default
|
31
|
+
# text map getter will be used.
|
32
|
+
#
|
33
|
+
# @return [Context] context updated with extracted baggage, or the original context
|
34
|
+
# if extraction fails
|
35
|
+
def extract(carrier, context: Context.current, getter: Context::Propagation.text_map_getter)
|
36
|
+
# Check if the original input context already has a valid span
|
37
|
+
span_context = Trace.current_span(context).context
|
38
|
+
# If original context is valid, just return it - do not extract from carrier
|
39
|
+
return context if span_context.valid?
|
40
|
+
|
41
|
+
# First try to extract from the carrier using the standard X-Ray propagator
|
42
|
+
xray_context = super
|
43
|
+
|
44
|
+
# Check if we successfully extracted a context from the carrier
|
45
|
+
span_context = Trace.current_span(xray_context).context
|
46
|
+
return xray_context if span_context.valid?
|
47
|
+
|
48
|
+
# If not, check for the Lambda environment variable
|
49
|
+
trace_header = ENV.fetch(AWS_TRACE_HEADER_ENV_KEY, nil)
|
50
|
+
return xray_context unless trace_header
|
51
|
+
|
52
|
+
# Create a carrier with the trace header and extract from it
|
53
|
+
env_carrier = { XRAY_CONTEXT_KEY => trace_header }
|
54
|
+
super(env_carrier, context: xray_context, getter: getter)
|
55
|
+
rescue OpenTelemetry::Error
|
56
|
+
context
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -12,6 +12,7 @@
|
|
12
12
|
# See the documentation for the `opentelemetry-api` gem for details.
|
13
13
|
|
14
14
|
require_relative 'xray/text_map_propagator'
|
15
|
+
require_relative 'xray/lambda_text_map_propagator'
|
15
16
|
|
16
17
|
module OpenTelemetry
|
17
18
|
# Namespace for OpenTelemetry propagator extension libraries
|
@@ -22,7 +23,8 @@ module OpenTelemetry
|
|
22
23
|
|
23
24
|
DEBUG_CONTEXT_KEY = Context.create_key('xray-debug-key')
|
24
25
|
TEXT_MAP_PROPAGATOR = TextMapPropagator.new
|
25
|
-
|
26
|
+
LAMBDA_TEXT_MAP_PROPAGATOR = LambdaTextMapPropagator.new
|
27
|
+
private_constant :DEBUG_CONTEXT_KEY, :TEXT_MAP_PROPAGATOR, :LAMBDA_TEXT_MAP_PROPAGATOR
|
26
28
|
|
27
29
|
# @api private
|
28
30
|
# Returns a new context with the xray debug flag enabled
|
@@ -41,6 +43,12 @@ module OpenTelemetry
|
|
41
43
|
def text_map_propagator
|
42
44
|
TEXT_MAP_PROPAGATOR
|
43
45
|
end
|
46
|
+
|
47
|
+
# Returns a text map propagator that propagates context in the XRay
|
48
|
+
# format with special handling for Lambda environment.
|
49
|
+
def lambda_text_map_propagator
|
50
|
+
LAMBDA_TEXT_MAP_PROPAGATOR
|
51
|
+
end
|
44
52
|
end
|
45
53
|
end
|
46
54
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opentelemetry-propagator-xray
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.24.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: 2025-
|
11
|
+
date: 2025-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opentelemetry-api
|
@@ -24,104 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '2.4'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '2.4'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: minitest
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '5.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '5.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '13.0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '13.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rubocop
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 1.69.1
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 1.69.1
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rubocop-performance
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 1.23.0
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 1.23.0
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: simplecov
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 0.22.0
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 0.22.0
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: yard
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0.9'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0.9'
|
125
27
|
description: XRay Context Propagation Extension for the OpenTelemetry framework
|
126
28
|
email:
|
127
29
|
- cncf-opentelemetry-contributors@lists.cncf.io
|
@@ -136,16 +38,17 @@ files:
|
|
136
38
|
- lib/opentelemetry-propagator-xray.rb
|
137
39
|
- lib/opentelemetry/propagator/xray.rb
|
138
40
|
- lib/opentelemetry/propagator/xray/id_generator.rb
|
41
|
+
- lib/opentelemetry/propagator/xray/lambda_text_map_propagator.rb
|
139
42
|
- lib/opentelemetry/propagator/xray/text_map_propagator.rb
|
140
43
|
- lib/opentelemetry/propagator/xray/version.rb
|
141
44
|
homepage: https://github.com/open-telemetry/opentelemetry-ruby-contrib
|
142
45
|
licenses:
|
143
46
|
- Apache-2.0
|
144
47
|
metadata:
|
145
|
-
changelog_uri: https://rubydoc.info/gems/opentelemetry-propagator-xray/0.
|
48
|
+
changelog_uri: https://rubydoc.info/gems/opentelemetry-propagator-xray/0.24.0/file/CHANGELOG.md
|
146
49
|
source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/propagator/xray
|
147
50
|
bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
|
148
|
-
documentation_uri: https://rubydoc.info/gems/opentelemetry-propagator-xray/0.
|
51
|
+
documentation_uri: https://rubydoc.info/gems/opentelemetry-propagator-xray/0.24.0
|
149
52
|
post_install_message: ''
|
150
53
|
rdoc_options: []
|
151
54
|
require_paths:
|