opentelemetry-instrumentation-graphql 0.27.0 → 0.28.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: cf9a17d56d662feb78eacc36f2f23dc43d4a01244993b638b87f2c1ce1edc5da
|
4
|
+
data.tar.gz: 899d075eb41a2d13c0da8d9e6b3ccc08c0b568b476a0be89262e04baa85c31bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0217566ff1adebe65c331b91ca473989c47ffa43fc027d029fd125eb51388d739e2b283b43eadc80771cb81665c868418a7b06adb8f2be8ee80243259f733d88
|
7
|
+
data.tar.gz: ea52c6fd2b8b9bc378038046a25b92e1dbc11386764e88482439ba974a7fd1f5b6f2e42850b11b270c4ce69410e4a49419dc042328dc9b9c8bc7981c35e91db5
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Release History: opentelemetry-instrumentation-graphql
|
2
2
|
|
3
|
+
### v0.28.0 / 2024-02-16
|
4
|
+
|
5
|
+
* BREAKING CHANGE: GraphQL Legacy Tracer perf improvements [#867](https://github.com/open-telemetry/opentelemetry-ruby-contrib/pull/867).
|
6
|
+
|
7
|
+
* ADDED: GraphQL Legacy Tracer perf improvements [#867](https://github.com/open-telemetry/opentelemetry-ruby-contrib/pull/867).
|
8
|
+
|
3
9
|
### v0.27.0 / 2023-11-28
|
4
10
|
|
5
11
|
* CHANGED: Performance optimization cache attribute hashes [#723](https://github.com/open-telemetry/opentelemetry-ruby-contrib/pull/723)
|
@@ -13,6 +13,8 @@ module OpenTelemetry
|
|
13
13
|
# GraphQLTracer contains the OpenTelemetry tracer implementation compatible with
|
14
14
|
# the GraphQL tracer API
|
15
15
|
class GraphQLTracer < ::GraphQL::Tracing::PlatformTracing
|
16
|
+
DEFAULT_HASH = {}.freeze
|
17
|
+
|
16
18
|
self.platform_keys = {
|
17
19
|
'lex' => 'graphql.lex',
|
18
20
|
'parse' => 'graphql.parse',
|
@@ -86,24 +88,60 @@ module OpenTelemetry
|
|
86
88
|
end
|
87
89
|
|
88
90
|
def attributes_for(key, data)
|
89
|
-
attributes = {}
|
90
91
|
case key
|
91
|
-
when 'execute_field'
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
92
|
+
when 'execute_field'
|
93
|
+
field_attr_cache = data[:query].context.namespace(:otel_attrs)[:execute_field_attrs] ||= attr_cache do |field|
|
94
|
+
attrs = {}
|
95
|
+
attrs['graphql.field.parent'] = field.owner.graphql_name if field.owner.graphql_name
|
96
|
+
attrs['graphql.field.name'] = field.graphql_name if field.graphql_name
|
97
|
+
attrs['graphql.lazy'] = false
|
98
|
+
attrs.freeze
|
99
|
+
end
|
100
|
+
field_attr_cache[data[:field]]
|
101
|
+
when 'execute_field_lazy'
|
102
|
+
lazy_field_attr_cache = data[:query].context.namespace(:otel_attrs)[:execute_field_lazy_attrs] ||= attr_cache do |field|
|
103
|
+
attrs = {}
|
104
|
+
attrs['graphql.field.parent'] = field.owner.graphql_name if field.owner.graphql_name
|
105
|
+
attrs['graphql.field.name'] = field.graphql_name if field.graphql_name
|
106
|
+
attrs['graphql.lazy'] = true
|
107
|
+
attrs.freeze
|
108
|
+
end
|
109
|
+
lazy_field_attr_cache[data[:field]]
|
110
|
+
when 'authorized', 'resolve_type'
|
111
|
+
type_attrs_cache = data[:context].namespace(:otel_attrs)[:type_attrs] ||= attr_cache do |type|
|
112
|
+
attrs = {}
|
113
|
+
attrs['graphql.type.name'] = type.graphql_name if type.graphql_name
|
114
|
+
attrs['graphql.lazy'] = false
|
115
|
+
attrs.freeze
|
116
|
+
end
|
117
|
+
type_attrs_cache[data[:type]]
|
118
|
+
when 'authorized_lazy', 'resolve_type_lazy'
|
119
|
+
type_lazy_attrs_cache = data[:context].namespace(:otel_attrs)[:type_lazy_attrs] ||= attr_cache do |type|
|
120
|
+
attrs = {}
|
121
|
+
attrs['graphql.type.name'] = type.graphql_name if type.graphql_name
|
122
|
+
attrs['graphql.lazy'] = true
|
123
|
+
attrs.freeze
|
124
|
+
end
|
125
|
+
type_lazy_attrs_cache[data[:type]]
|
101
126
|
when 'execute_query'
|
102
|
-
|
103
|
-
|
104
|
-
|
127
|
+
attrs = {}
|
128
|
+
attrs['graphql.document'] = data[:query].query_string if data[:query].query_string
|
129
|
+
# rubocop:disable Style/SafeNavigation - using safe navigation creates more objects, we want to avoid this
|
130
|
+
attrs['graphql.operation.type'] = data[:query].selected_operation.operation_type if data[:query].selected_operation && data[:query].selected_operation.operation_type
|
131
|
+
# rubocop:enable Style/SafeNavigation
|
132
|
+
attrs['graphql.operation.name'] = data[:query].selected_operation_name || 'anonymous'
|
133
|
+
attrs.freeze
|
134
|
+
else
|
135
|
+
DEFAULT_HASH
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
def attr_cache
|
140
|
+
cache_h = Hash.new do |h, k|
|
141
|
+
h[k] = yield(k)
|
105
142
|
end
|
106
|
-
|
143
|
+
cache_h.compare_by_identity
|
144
|
+
cache_h
|
107
145
|
end
|
108
146
|
end
|
109
147
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opentelemetry-instrumentation-graphql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.28.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:
|
11
|
+
date: 2024-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opentelemetry-api
|
@@ -148,28 +148,28 @@ dependencies:
|
|
148
148
|
requirements:
|
149
149
|
- - "~>"
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version: 1.
|
151
|
+
version: 1.60.1
|
152
152
|
type: :development
|
153
153
|
prerelease: false
|
154
154
|
version_requirements: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
156
|
- - "~>"
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version: 1.
|
158
|
+
version: 1.60.1
|
159
159
|
- !ruby/object:Gem::Dependency
|
160
160
|
name: rubocop-performance
|
161
161
|
requirement: !ruby/object:Gem::Requirement
|
162
162
|
requirements:
|
163
163
|
- - "~>"
|
164
164
|
- !ruby/object:Gem::Version
|
165
|
-
version: 1.
|
165
|
+
version: '1.20'
|
166
166
|
type: :development
|
167
167
|
prerelease: false
|
168
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
169
|
requirements:
|
170
170
|
- - "~>"
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
version: 1.
|
172
|
+
version: '1.20'
|
173
173
|
- !ruby/object:Gem::Dependency
|
174
174
|
name: simplecov
|
175
175
|
requirement: !ruby/object:Gem::Requirement
|
@@ -234,10 +234,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby-contrib
|
|
234
234
|
licenses:
|
235
235
|
- Apache-2.0
|
236
236
|
metadata:
|
237
|
-
changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-graphql/0.
|
237
|
+
changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-graphql/0.28.0/file/CHANGELOG.md
|
238
238
|
source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation/graphql
|
239
239
|
bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
|
240
|
-
documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-graphql/0.
|
240
|
+
documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-graphql/0.28.0
|
241
241
|
post_install_message:
|
242
242
|
rdoc_options: []
|
243
243
|
require_paths:
|