lib/graphql/tracing/platform_tracing.rb in graphql-1.8.18 vs lib/graphql/tracing/platform_tracing.rb in graphql-1.9.0.pre1
- old
+ new
@@ -24,10 +24,26 @@
platform_key = @platform_keys.fetch(key)
platform_trace(platform_key, key, data) do
yield
end
when "execute_field", "execute_field_lazy"
- if (platform_key = data[:context].field.metadata[:platform_key])
+ if data[:context]
+ field = data[:context].field
+ platform_key = field.metadata[:platform_key]
+ trace_field = true # implemented with instrumenter
+ else
+ field = data[:field]
+ # Lots of duplicated work here, can this be done ahead of time?
+ platform_key = platform_field_key(field.owner, field)
+ return_type = field.type.unwrap
+ trace_field = if return_type.kind.scalar? || return_type.kind.enum?
+ (field.trace.nil? && @trace_scalars) || field.trace
+ else
+ true
+ end
+ end
+
+ if platform_key && trace_field
platform_trace(platform_key, key, data) do
yield
end
else
yield