Skip to content

Commit 89da8dc

Browse files
authored
Merge pull request rmosolgo#4402 from rmosolgo/2.0.17-tracer-fix
[2.0.17] Fix execution errors raised by fields in tracing
2 parents 259fa7b + 3483b91 commit 89da8dc

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

lib/graphql/schema/field.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -740,6 +740,8 @@ def resolve(object, args, query_ctx)
740740
end
741741
# if the line above doesn't raise, re-raise
742742
raise
743+
rescue GraphQL::ExecutionError => err
744+
err
743745
end
744746

745747
# @param ctx [GraphQL::Query::Context]

spec/graphql/tracing/platform_tracing_spec.rb

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ def platform_resolve_type_key(type)
3030

3131
def platform_trace(platform_key, key, data)
3232
TRACE << platform_key
33-
yield
33+
res = yield
34+
if res.is_a?(GraphQL::ExecutionError)
35+
TRACE << "returned error"
36+
end
37+
res
3438
end
3539
end
3640

@@ -94,6 +98,12 @@ def platform_trace(platform_key, key, data)
9498
assert_equal expected_trace, CustomPlatformTracer::TRACE
9599
end
96100

101+
it "gets execution errors raised from field resolution" do
102+
scalar_schema = Class.new(Dummy::Schema) { use(CustomPlatformTracer, trace_scalars: true) }
103+
scalar_schema.execute("{ executionError }")
104+
assert_includes CustomPlatformTracer::TRACE, "returned error"
105+
end
106+
97107
it "traces resolve_type calls" do
98108
schema.execute(" { favoriteEdible { __typename } }")
99109
expected_trace = [

0 commit comments

Comments
 (0)