graphql 2.5.11 → 2.5.16
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/lib/graphql/dataloader/async_dataloader.rb +22 -11
- data/lib/graphql/dataloader/null_dataloader.rb +44 -10
- data/lib/graphql/dataloader.rb +75 -23
- data/lib/graphql/date_encoding_error.rb +1 -1
- data/lib/graphql/execution/interpreter/resolve.rb +7 -13
- data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +13 -0
- data/lib/graphql/execution/interpreter/runtime.rb +21 -16
- data/lib/graphql/execution/interpreter.rb +2 -13
- data/lib/graphql/language/document_from_schema_definition.rb +2 -1
- data/lib/graphql/schema/build_from_definition.rb +3 -1
- data/lib/graphql/schema/directive.rb +22 -4
- data/lib/graphql/schema/member/has_arguments.rb +6 -0
- data/lib/graphql/schema/validator/required_validator.rb +33 -2
- data/lib/graphql/schema/visibility.rb +2 -2
- data/lib/graphql/schema.rb +20 -3
- data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +2 -2
- data/lib/graphql/subscriptions/action_cable_subscriptions.rb +1 -0
- data/lib/graphql/testing/helpers.rb +12 -9
- data/lib/graphql/testing/mock_action_cable.rb +111 -0
- data/lib/graphql/testing.rb +1 -0
- data/lib/graphql/tracing/detailed_trace.rb +52 -4
- data/lib/graphql/tracing/perfetto_trace.rb +161 -77
- data/lib/graphql/tracing/sentry_trace.rb +3 -1
- data/lib/graphql/version.rb +1 -1
- data/lib/graphql.rb +1 -1
- metadata +4 -3
|
@@ -60,11 +60,37 @@ module GraphQL
|
|
|
60
60
|
DA_FETCH_KEYS_IID = 13
|
|
61
61
|
DA_STR_VAL_NIL_IID = 14
|
|
62
62
|
|
|
63
|
+
REVERSE_DEBUG_NAME_LOOKUP = {
|
|
64
|
+
DA_OBJECT_IID => "object",
|
|
65
|
+
DA_RESULT_IID => "result",
|
|
66
|
+
DA_ARGUMENTS_IID => "arguments",
|
|
67
|
+
DA_FETCH_KEYS_IID => "fetch keys",
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
DEBUG_INSPECT_CATEGORY_IIDS = [15]
|
|
71
|
+
DA_DEBUG_INSPECT_CLASS_IID = 16
|
|
72
|
+
DEBUG_INSPECT_EVENT_NAME_IID = 17
|
|
73
|
+
DA_DEBUG_INSPECT_FOR_IID = 18
|
|
74
|
+
|
|
63
75
|
# @param active_support_notifications_pattern [String, RegExp, false] A filter for `ActiveSupport::Notifications`, if it's present. Or `false` to skip subscribing.
|
|
64
76
|
def initialize(active_support_notifications_pattern: nil, save_profile: false, **_rest)
|
|
65
77
|
super
|
|
66
78
|
@active_support_notifications_pattern = active_support_notifications_pattern
|
|
67
79
|
@save_profile = save_profile
|
|
80
|
+
|
|
81
|
+
query = if @multiplex
|
|
82
|
+
@multiplex.queries.first
|
|
83
|
+
else
|
|
84
|
+
@query # could still be nil in some initializations
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
@detailed_trace = query&.schema&.detailed_trace || DetailedTrace
|
|
88
|
+
@create_debug_annotations = if (ctx = query&.context).nil? || (ctx_debug = ctx[:detailed_trace_debug]).nil?
|
|
89
|
+
@detailed_trace.debug?
|
|
90
|
+
else
|
|
91
|
+
ctx_debug
|
|
92
|
+
end
|
|
93
|
+
|
|
68
94
|
Fiber[:graphql_flow_stack] = nil
|
|
69
95
|
@sequence_id = object_id
|
|
70
96
|
@pid = Process.pid
|
|
@@ -110,6 +136,10 @@ module GraphQL
|
|
|
110
136
|
@objects_counter_id = :objects_counter.object_id
|
|
111
137
|
@fibers_counter_id = :fibers_counter.object_id
|
|
112
138
|
@fields_counter_id = :fields_counter.object_id
|
|
139
|
+
@counts_objects = [@objects_counter_id]
|
|
140
|
+
@counts_objects_and_fields = [@objects_counter_id, @fields_counter_id]
|
|
141
|
+
@counts_fibers = [@fibers_counter_id]
|
|
142
|
+
@counts_fibers_and_objects = [@fibers_counter_id, @objects_counter_id]
|
|
113
143
|
@begin_validate = nil
|
|
114
144
|
@begin_time = nil
|
|
115
145
|
@packets = []
|
|
@@ -132,16 +162,19 @@ module GraphQL
|
|
|
132
162
|
EventCategory.new(name: "ActiveSupport::Notifications", iid: ACTIVE_SUPPORT_NOTIFICATIONS_CATEGORY_IIDS.first),
|
|
133
163
|
EventCategory.new(name: "Authorized", iid: AUTHORIZED_CATEGORY_IIDS.first),
|
|
134
164
|
EventCategory.new(name: "Resolve Type", iid: RESOLVE_TYPE_CATEGORY_IIDS.first),
|
|
165
|
+
EventCategory.new(name: "Debug Inspect", iid: DEBUG_INSPECT_CATEGORY_IIDS.first),
|
|
135
166
|
],
|
|
136
167
|
debug_annotation_names: [
|
|
137
|
-
DebugAnnotationName.new(name:
|
|
138
|
-
DebugAnnotationName.new(name: "
|
|
139
|
-
DebugAnnotationName.new(name: "
|
|
140
|
-
DebugAnnotationName.new(name: "fetch keys", iid: DA_FETCH_KEYS_IID),
|
|
168
|
+
*REVERSE_DEBUG_NAME_LOOKUP.map { |(iid, name)| DebugAnnotationName.new(name: name, iid: iid) },
|
|
169
|
+
DebugAnnotationName.new(name: "inspect instance of", iid: DA_DEBUG_INSPECT_CLASS_IID),
|
|
170
|
+
DebugAnnotationName.new(name: "inspecting for", iid: DA_DEBUG_INSPECT_FOR_IID)
|
|
141
171
|
],
|
|
142
172
|
debug_annotation_string_values: [
|
|
143
173
|
InternedString.new(str: "(nil)", iid: DA_STR_VAL_NIL_IID),
|
|
144
174
|
],
|
|
175
|
+
event_names: [
|
|
176
|
+
EventName.new(name: "#{(@detailed_trace.is_a?(Class) ? @detailed_trace : @detailed_trace.class).name}#inspect_object", iid: DEBUG_INSPECT_EVENT_NAME_IID)
|
|
177
|
+
],
|
|
145
178
|
),
|
|
146
179
|
trusted_packet_sequence_id: @sequence_id,
|
|
147
180
|
sequence_flags: 2,
|
|
@@ -180,11 +213,9 @@ module GraphQL
|
|
|
180
213
|
@packets << trace_packet(
|
|
181
214
|
type: TrackEvent::Type::TYPE_SLICE_BEGIN,
|
|
182
215
|
track_uuid: fid,
|
|
183
|
-
name: "Multiplex"
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
]
|
|
187
|
-
)
|
|
216
|
+
name: "Multiplex"
|
|
217
|
+
) { [ payload_to_debug("query_string", multiplex.queries.map(&:sanitized_query_string).join("\n\n")) ] }
|
|
218
|
+
|
|
188
219
|
result = super
|
|
189
220
|
|
|
190
221
|
@packets << trace_packet(
|
|
@@ -209,7 +240,7 @@ module GraphQL
|
|
|
209
240
|
track_uuid: fid,
|
|
210
241
|
name: query.context.current_path.join("."),
|
|
211
242
|
category_iids: FIELD_EXECUTE_CATEGORY_IIDS,
|
|
212
|
-
extra_counter_track_uuids:
|
|
243
|
+
extra_counter_track_uuids: @counts_objects,
|
|
213
244
|
extra_counter_values: [count_allocations],
|
|
214
245
|
)
|
|
215
246
|
@packets << packet
|
|
@@ -218,19 +249,23 @@ module GraphQL
|
|
|
218
249
|
end
|
|
219
250
|
|
|
220
251
|
def end_execute_field(field, object, arguments, query, app_result)
|
|
252
|
+
end_ts = ts
|
|
221
253
|
start_field = fiber_flow_stack.pop
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
254
|
+
if @create_debug_annotations
|
|
255
|
+
start_field.track_event = dup_with(start_field.track_event,{
|
|
256
|
+
debug_annotations: [
|
|
257
|
+
payload_to_debug(nil, object.object, iid: DA_OBJECT_IID, intern_value: true),
|
|
258
|
+
payload_to_debug(nil, arguments, iid: DA_ARGUMENTS_IID),
|
|
259
|
+
payload_to_debug(nil, app_result, iid: DA_RESULT_IID, intern_value: true)
|
|
260
|
+
]
|
|
261
|
+
})
|
|
262
|
+
end
|
|
229
263
|
|
|
230
264
|
@packets << trace_packet(
|
|
265
|
+
timestamp: end_ts,
|
|
231
266
|
type: TrackEvent::Type::TYPE_SLICE_END,
|
|
232
267
|
track_uuid: fid,
|
|
233
|
-
extra_counter_track_uuids:
|
|
268
|
+
extra_counter_track_uuids: @counts_objects_and_fields,
|
|
234
269
|
extra_counter_values: [count_allocations, count_fields],
|
|
235
270
|
)
|
|
236
271
|
super
|
|
@@ -240,22 +275,24 @@ module GraphQL
|
|
|
240
275
|
@packets << trace_packet(
|
|
241
276
|
type: TrackEvent::Type::TYPE_SLICE_BEGIN,
|
|
242
277
|
track_uuid: fid,
|
|
243
|
-
extra_counter_track_uuids:
|
|
278
|
+
extra_counter_track_uuids: @counts_objects,
|
|
244
279
|
extra_counter_values: [count_allocations],
|
|
245
|
-
name: "Analysis"
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
280
|
+
name: "Analysis") {
|
|
281
|
+
[
|
|
282
|
+
payload_to_debug("analyzers_count", analyzers.size),
|
|
283
|
+
payload_to_debug("analyzers", analyzers),
|
|
284
|
+
]
|
|
285
|
+
}
|
|
251
286
|
super
|
|
252
287
|
end
|
|
253
288
|
|
|
254
289
|
def end_analyze_multiplex(m, analyzers)
|
|
290
|
+
end_ts = ts
|
|
255
291
|
@packets << trace_packet(
|
|
292
|
+
timestamp: end_ts,
|
|
256
293
|
type: TrackEvent::Type::TYPE_SLICE_END,
|
|
257
294
|
track_uuid: fid,
|
|
258
|
-
extra_counter_track_uuids:
|
|
295
|
+
extra_counter_track_uuids: @counts_objects,
|
|
259
296
|
extra_counter_values: [count_allocations],
|
|
260
297
|
)
|
|
261
298
|
super
|
|
@@ -265,50 +302,57 @@ module GraphQL
|
|
|
265
302
|
@packets << trace_packet(
|
|
266
303
|
type: TrackEvent::Type::TYPE_SLICE_BEGIN,
|
|
267
304
|
track_uuid: fid,
|
|
268
|
-
extra_counter_track_uuids:
|
|
305
|
+
extra_counter_track_uuids: @counts_objects,
|
|
269
306
|
extra_counter_values: [count_allocations],
|
|
270
307
|
name: "Parse"
|
|
271
308
|
)
|
|
272
309
|
result = super
|
|
310
|
+
end_ts = ts
|
|
273
311
|
@packets << trace_packet(
|
|
312
|
+
timestamp: end_ts,
|
|
274
313
|
type: TrackEvent::Type::TYPE_SLICE_END,
|
|
275
314
|
track_uuid: fid,
|
|
276
|
-
extra_counter_track_uuids:
|
|
315
|
+
extra_counter_track_uuids: @counts_objects,
|
|
277
316
|
extra_counter_values: [count_allocations],
|
|
278
317
|
)
|
|
279
318
|
result
|
|
280
319
|
end
|
|
281
320
|
|
|
282
321
|
def begin_validate(query, validate)
|
|
283
|
-
@
|
|
322
|
+
@begin_validate = trace_packet(
|
|
284
323
|
type: TrackEvent::Type::TYPE_SLICE_BEGIN,
|
|
285
324
|
track_uuid: fid,
|
|
286
|
-
extra_counter_track_uuids:
|
|
325
|
+
extra_counter_track_uuids: @counts_objects,
|
|
287
326
|
extra_counter_values: [count_allocations],
|
|
288
|
-
name: "Validate"
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
327
|
+
name: "Validate") {
|
|
328
|
+
[payload_to_debug("validate?", validate)]
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
@packets << @begin_validate
|
|
293
332
|
super
|
|
294
333
|
end
|
|
295
334
|
|
|
296
335
|
def end_validate(query, validate, validation_errors)
|
|
336
|
+
end_ts = ts
|
|
297
337
|
@packets << trace_packet(
|
|
338
|
+
timestamp: end_ts,
|
|
298
339
|
type: TrackEvent::Type::TYPE_SLICE_END,
|
|
299
340
|
track_uuid: fid,
|
|
300
|
-
extra_counter_track_uuids:
|
|
341
|
+
extra_counter_track_uuids: @counts_objects,
|
|
301
342
|
extra_counter_values: [count_allocations],
|
|
302
343
|
)
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
344
|
+
|
|
345
|
+
if @create_debug_annotations
|
|
346
|
+
new_bv_track_event = dup_with(
|
|
347
|
+
@begin_validate.track_event, {
|
|
348
|
+
debug_annotations: [
|
|
349
|
+
@begin_validate.track_event.debug_annotations.first,
|
|
350
|
+
payload_to_debug("valid?", validation_errors.empty?)
|
|
351
|
+
]
|
|
352
|
+
}
|
|
353
|
+
)
|
|
354
|
+
@begin_validate.track_event = new_bv_track_event
|
|
355
|
+
end
|
|
312
356
|
super
|
|
313
357
|
end
|
|
314
358
|
|
|
@@ -318,7 +362,7 @@ module GraphQL
|
|
|
318
362
|
track_uuid: fid,
|
|
319
363
|
name: "Create Execution Fiber",
|
|
320
364
|
category_iids: DATALOADER_CATEGORY_IIDS,
|
|
321
|
-
extra_counter_track_uuids:
|
|
365
|
+
extra_counter_track_uuids: @counts_fibers_and_objects,
|
|
322
366
|
extra_counter_values: [count_fibers(1), count_allocations]
|
|
323
367
|
)
|
|
324
368
|
@packets << track_descriptor_packet(@did, fid, "Exec Fiber ##{fid}")
|
|
@@ -331,7 +375,7 @@ module GraphQL
|
|
|
331
375
|
track_uuid: fid,
|
|
332
376
|
name: "Create Source Fiber",
|
|
333
377
|
category_iids: DATALOADER_CATEGORY_IIDS,
|
|
334
|
-
extra_counter_track_uuids:
|
|
378
|
+
extra_counter_track_uuids: @counts_fibers_and_objects,
|
|
335
379
|
extra_counter_values: [count_fibers(1), count_allocations]
|
|
336
380
|
)
|
|
337
381
|
@packets << track_descriptor_packet(@did, fid, "Source Fiber ##{fid}")
|
|
@@ -385,7 +429,7 @@ module GraphQL
|
|
|
385
429
|
track_uuid: fid,
|
|
386
430
|
name: "Fiber Exit",
|
|
387
431
|
category_iids: DATALOADER_CATEGORY_IIDS,
|
|
388
|
-
extra_counter_track_uuids:
|
|
432
|
+
extra_counter_track_uuids: @counts_fibers,
|
|
389
433
|
extra_counter_values: [count_fibers(-1)],
|
|
390
434
|
)
|
|
391
435
|
super
|
|
@@ -415,31 +459,34 @@ module GraphQL
|
|
|
415
459
|
fds = @flow_ids[source]
|
|
416
460
|
fds_copy = fds.dup
|
|
417
461
|
fds.clear
|
|
462
|
+
|
|
418
463
|
packet = trace_packet(
|
|
419
464
|
type: TrackEvent::Type::TYPE_SLICE_BEGIN,
|
|
420
465
|
track_uuid: fid,
|
|
421
466
|
name_iid: @source_name_iids[source.class],
|
|
422
467
|
category_iids: DATALOADER_CATEGORY_IIDS,
|
|
423
468
|
flow_ids: fds_copy,
|
|
424
|
-
extra_counter_track_uuids:
|
|
425
|
-
extra_counter_values: [count_allocations]
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
469
|
+
extra_counter_track_uuids: @counts_objects,
|
|
470
|
+
extra_counter_values: [count_allocations]) {
|
|
471
|
+
[
|
|
472
|
+
payload_to_debug(nil, source.pending.values, iid: DA_FETCH_KEYS_IID, intern_value: true),
|
|
473
|
+
*(source.instance_variables - [:@pending, :@fetching, :@results, :@dataloader]).map { |iv|
|
|
474
|
+
payload_to_debug(iv.to_s, source.instance_variable_get(iv), intern_value: true)
|
|
475
|
+
}
|
|
476
|
+
]
|
|
477
|
+
}
|
|
433
478
|
@packets << packet
|
|
434
479
|
fiber_flow_stack << packet
|
|
435
480
|
super
|
|
436
481
|
end
|
|
437
482
|
|
|
438
483
|
def end_dataloader_source(source)
|
|
484
|
+
end_ts = ts
|
|
439
485
|
@packets << trace_packet(
|
|
486
|
+
timestamp: end_ts,
|
|
440
487
|
type: TrackEvent::Type::TYPE_SLICE_END,
|
|
441
488
|
track_uuid: fid,
|
|
442
|
-
extra_counter_track_uuids:
|
|
489
|
+
extra_counter_track_uuids: @counts_objects,
|
|
443
490
|
extra_counter_values: [count_allocations],
|
|
444
491
|
)
|
|
445
492
|
fiber_flow_stack.pop
|
|
@@ -451,7 +498,7 @@ module GraphQL
|
|
|
451
498
|
type: TrackEvent::Type::TYPE_SLICE_BEGIN,
|
|
452
499
|
track_uuid: fid,
|
|
453
500
|
category_iids: AUTHORIZED_CATEGORY_IIDS,
|
|
454
|
-
extra_counter_track_uuids:
|
|
501
|
+
extra_counter_track_uuids: @counts_objects,
|
|
455
502
|
extra_counter_values: [count_allocations],
|
|
456
503
|
name_iid: @auth_name_iids[type],
|
|
457
504
|
)
|
|
@@ -461,14 +508,18 @@ module GraphQL
|
|
|
461
508
|
end
|
|
462
509
|
|
|
463
510
|
def end_authorized(type, obj, ctx, is_authorized)
|
|
511
|
+
end_ts = ts
|
|
464
512
|
@packets << trace_packet(
|
|
513
|
+
timestamp: end_ts,
|
|
465
514
|
type: TrackEvent::Type::TYPE_SLICE_END,
|
|
466
515
|
track_uuid: fid,
|
|
467
|
-
extra_counter_track_uuids:
|
|
516
|
+
extra_counter_track_uuids: @counts_objects,
|
|
468
517
|
extra_counter_values: [count_allocations],
|
|
469
518
|
)
|
|
470
519
|
beg_auth = fiber_flow_stack.pop
|
|
471
|
-
|
|
520
|
+
if @create_debug_annotations
|
|
521
|
+
beg_auth.track_event = dup_with(beg_auth.track_event, { debug_annotations: [payload_to_debug("authorized?", is_authorized)] })
|
|
522
|
+
end
|
|
472
523
|
super
|
|
473
524
|
end
|
|
474
525
|
|
|
@@ -477,7 +528,7 @@ module GraphQL
|
|
|
477
528
|
type: TrackEvent::Type::TYPE_SLICE_BEGIN,
|
|
478
529
|
track_uuid: fid,
|
|
479
530
|
category_iids: RESOLVE_TYPE_CATEGORY_IIDS,
|
|
480
|
-
extra_counter_track_uuids:
|
|
531
|
+
extra_counter_track_uuids: @counts_objects,
|
|
481
532
|
extra_counter_values: [count_allocations],
|
|
482
533
|
name_iid: @resolve_type_name_iids[type],
|
|
483
534
|
)
|
|
@@ -487,14 +538,18 @@ module GraphQL
|
|
|
487
538
|
end
|
|
488
539
|
|
|
489
540
|
def end_resolve_type(type, value, context, resolved_type)
|
|
541
|
+
end_ts = ts
|
|
490
542
|
@packets << trace_packet(
|
|
543
|
+
timestamp: end_ts,
|
|
491
544
|
type: TrackEvent::Type::TYPE_SLICE_END,
|
|
492
545
|
track_uuid: fid,
|
|
493
|
-
extra_counter_track_uuids:
|
|
546
|
+
extra_counter_track_uuids: @counts_objects,
|
|
494
547
|
extra_counter_values: [count_allocations],
|
|
495
548
|
)
|
|
496
549
|
rt_begin = fiber_flow_stack.pop
|
|
497
|
-
|
|
550
|
+
if @create_debug_annotations
|
|
551
|
+
rt_begin.track_event = dup_with(rt_begin.track_event, { debug_annotations: [payload_to_debug("resolved_type", resolved_type, intern_value: true)] })
|
|
552
|
+
end
|
|
498
553
|
super
|
|
499
554
|
end
|
|
500
555
|
|
|
@@ -546,7 +601,6 @@ module GraphQL
|
|
|
546
601
|
def payload_to_debug(k, v, iid: nil, intern_value: false)
|
|
547
602
|
if iid.nil?
|
|
548
603
|
iid = @interned_da_name_ids[k]
|
|
549
|
-
k = nil
|
|
550
604
|
end
|
|
551
605
|
case v
|
|
552
606
|
when String
|
|
@@ -578,15 +632,41 @@ module GraphQL
|
|
|
578
632
|
when Symbol
|
|
579
633
|
debug_annotation(iid, :string_value, v.inspect)
|
|
580
634
|
when Array
|
|
581
|
-
debug_annotation(iid, :array_values, v.map { |v2| payload_to_debug(
|
|
635
|
+
debug_annotation(iid, :array_values, v.each_with_index.map { |v2, idx| payload_to_debug((k ? "#{k}.#{idx}" : String(idx)), v2, intern_value: intern_value) }.compact)
|
|
582
636
|
when Hash
|
|
583
637
|
debug_annotation(iid, :dict_entries, v.map { |k2, v2| payload_to_debug(k2, v2, intern_value: intern_value) }.compact)
|
|
584
638
|
else
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
639
|
+
class_name_iid = @interned_da_string_values[v.class.name]
|
|
640
|
+
da = [
|
|
641
|
+
debug_annotation(DA_DEBUG_INSPECT_CLASS_IID, :string_value_iid, class_name_iid),
|
|
642
|
+
]
|
|
643
|
+
if k
|
|
644
|
+
k_str_value_iid = @interned_da_string_values[k]
|
|
645
|
+
da << debug_annotation(DA_DEBUG_INSPECT_FOR_IID, :string_value_iid, k_str_value_iid)
|
|
646
|
+
elsif iid
|
|
647
|
+
k = REVERSE_DEBUG_NAME_LOOKUP[iid] || @interned_da_name_ids.key(iid)
|
|
648
|
+
if k.nil?
|
|
649
|
+
da << debug_annotation(DA_DEBUG_INSPECT_FOR_IID, :string_value_iid, DA_STR_VAL_NIL_IID)
|
|
650
|
+
else
|
|
651
|
+
k_str_value_iid = @interned_da_string_values[k]
|
|
652
|
+
da << debug_annotation(DA_DEBUG_INSPECT_FOR_IID, :string_value_iid, k_str_value_iid)
|
|
653
|
+
end
|
|
589
654
|
end
|
|
655
|
+
|
|
656
|
+
@packets << trace_packet(
|
|
657
|
+
type: TrackEvent::Type::TYPE_SLICE_BEGIN,
|
|
658
|
+
track_uuid: fid,
|
|
659
|
+
name_iid: DEBUG_INSPECT_EVENT_NAME_IID,
|
|
660
|
+
category_iids: DEBUG_INSPECT_CATEGORY_IIDS,
|
|
661
|
+
extra_counter_track_uuids: @counts_objects,
|
|
662
|
+
extra_counter_values: [count_allocations],
|
|
663
|
+
debug_annotations: da,
|
|
664
|
+
)
|
|
665
|
+
debug_str = @detailed_trace.inspect_object(v)
|
|
666
|
+
@packets << trace_packet(
|
|
667
|
+
type: TrackEvent::Type::TYPE_SLICE_END,
|
|
668
|
+
track_uuid: fid,
|
|
669
|
+
)
|
|
590
670
|
if intern_value
|
|
591
671
|
str_iid = @interned_da_string_values[debug_str]
|
|
592
672
|
debug_annotation(iid, :string_value_iid, str_iid)
|
|
@@ -622,10 +702,14 @@ module GraphQL
|
|
|
622
702
|
Fiber[:graphql_flow_stack] ||= []
|
|
623
703
|
end
|
|
624
704
|
|
|
625
|
-
def trace_packet(event_attrs)
|
|
705
|
+
def trace_packet(timestamp: ts, **event_attrs)
|
|
706
|
+
if @create_debug_annotations && block_given?
|
|
707
|
+
event_attrs[:debug_annotations] = yield
|
|
708
|
+
end
|
|
709
|
+
track_event = TrackEvent.new(event_attrs)
|
|
626
710
|
TracePacket.new(
|
|
627
|
-
timestamp:
|
|
628
|
-
track_event:
|
|
711
|
+
timestamp: timestamp,
|
|
712
|
+
track_event: track_event,
|
|
629
713
|
trusted_packet_sequence_id: @sequence_id,
|
|
630
714
|
sequence_flags: 2,
|
|
631
715
|
interned_data: new_interned_data
|
|
@@ -690,9 +774,9 @@ module GraphQL
|
|
|
690
774
|
|
|
691
775
|
def subscribe_to_active_support_notifications(pattern)
|
|
692
776
|
@as_subscriber = ActiveSupport::Notifications.monotonic_subscribe(pattern) do |name, start, finish, id, payload|
|
|
693
|
-
metadata = payload.map { |k, v| payload_to_debug(k, v, intern_value: true) }
|
|
694
|
-
metadata
|
|
695
|
-
te = if metadata.empty?
|
|
777
|
+
metadata = @create_debug_annotations ? payload.map { |k, v| payload_to_debug(String(k), v, intern_value: true) } : nil
|
|
778
|
+
metadata&.compact!
|
|
779
|
+
te = if metadata.nil? || metadata.empty?
|
|
696
780
|
TrackEvent.new(
|
|
697
781
|
type: TrackEvent::Type::TYPE_SLICE_BEGIN,
|
|
698
782
|
track_uuid: fid,
|
|
@@ -721,7 +805,7 @@ module GraphQL
|
|
|
721
805
|
type: TrackEvent::Type::TYPE_SLICE_END,
|
|
722
806
|
track_uuid: fid,
|
|
723
807
|
name: name,
|
|
724
|
-
extra_counter_track_uuids:
|
|
808
|
+
extra_counter_track_uuids: @counts_objects,
|
|
725
809
|
extra_counter_values: [count_allocations]
|
|
726
810
|
),
|
|
727
811
|
trusted_packet_sequence_id: @sequence_id,
|
|
@@ -41,7 +41,9 @@ module GraphQL
|
|
|
41
41
|
if query.selected_operation_name
|
|
42
42
|
span.set_data('graphql.operation.name', query.selected_operation_name)
|
|
43
43
|
end
|
|
44
|
-
|
|
44
|
+
if query.selected_operation
|
|
45
|
+
span.set_data('graphql.operation.type', query.selected_operation.operation_type)
|
|
46
|
+
end
|
|
45
47
|
end
|
|
46
48
|
end
|
|
47
49
|
|
data/lib/graphql/version.rb
CHANGED
data/lib/graphql.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: graphql
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.5.
|
|
4
|
+
version: 2.5.16
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Robert Mosolgo
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2025-
|
|
10
|
+
date: 2025-12-10 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: base64
|
|
@@ -729,6 +729,7 @@ files:
|
|
|
729
729
|
- lib/graphql/subscriptions/serialize.rb
|
|
730
730
|
- lib/graphql/testing.rb
|
|
731
731
|
- lib/graphql/testing/helpers.rb
|
|
732
|
+
- lib/graphql/testing/mock_action_cable.rb
|
|
732
733
|
- lib/graphql/tracing.rb
|
|
733
734
|
- lib/graphql/tracing/active_support_notifications_trace.rb
|
|
734
735
|
- lib/graphql/tracing/active_support_notifications_tracing.rb
|
|
@@ -817,7 +818,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
817
818
|
- !ruby/object:Gem::Version
|
|
818
819
|
version: '0'
|
|
819
820
|
requirements: []
|
|
820
|
-
rubygems_version: 3.6.
|
|
821
|
+
rubygems_version: 3.6.2
|
|
821
822
|
specification_version: 4
|
|
822
823
|
summary: A GraphQL language and runtime for Ruby
|
|
823
824
|
test_files: []
|