Skip to content

Commit 2707fdf

Browse files
TimPansinoumaannamalailrafeei
authored
Protect graphql binds with try excepts. (#308)
Co-authored-by: Uma Annamalai <[email protected]> Co-authored-by: lrafeei <[email protected]> Co-authored-by: Uma Annamalai <[email protected]> Co-authored-by: lrafeei <[email protected]>
1 parent 7787161 commit 2707fdf

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

newrelic/hooks/framework_graphql.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,10 @@ def wrap_execute_operation(wrapped, instance, args, kwargs):
9494
try:
9595
operation = bind_operation_v3(*args, **kwargs)
9696
except TypeError:
97-
operation = bind_operation_v2(*args, **kwargs)
97+
try:
98+
operation = bind_operation_v2(*args, **kwargs)
99+
except TypeError:
100+
return wrapped(*args, **kwargs)
98101

99102
if graphql_version() < (3, 0, 0):
100103
execution_context = args[0]
@@ -236,7 +239,11 @@ def bind_get_middleware_resolvers(middlewares):
236239

237240

238241
def wrap_get_middleware_resolvers(wrapped, instance, args, kwargs):
239-
middlewares = bind_get_middleware_resolvers(*args, **kwargs)
242+
try:
243+
middlewares = bind_get_middleware_resolvers(*args, **kwargs)
244+
except TypeError:
245+
return wrapped(*args, **kwargs)
246+
240247
middlewares = [
241248
wrap_middleware(m) if not hasattr(m, "_nr_wrapped") else m for m in middlewares
242249
]
@@ -264,7 +271,11 @@ def bind_get_field_resolver(field_resolver):
264271

265272

266273
def wrap_get_field_resolver(wrapped, instance, args, kwargs):
267-
resolver = bind_get_field_resolver(*args, **kwargs)
274+
try:
275+
resolver = bind_get_field_resolver(*args, **kwargs)
276+
except TypeError:
277+
return wrapped(*args, **kwargs)
278+
268279
if not hasattr(resolver, "_nr_wrapped"):
269280
resolver = wrap_resolver(resolver)
270281
resolver._nr_wrapped = True
@@ -361,7 +372,10 @@ def wrap_resolve_field(wrapped, instance, args, kwargs):
361372
else:
362373
bind_resolve_field = bind_resolve_field_v3
363374

364-
parent_type, field_asts, field_path = bind_resolve_field(*args, **kwargs)
375+
try:
376+
parent_type, field_asts, field_path = bind_resolve_field(*args, **kwargs)
377+
except TypeError:
378+
return wrapped(*args, **kwargs)
365379

366380
field_name = field_asts[0].name.value
367381
field_def = parent_type.fields.get(field_name)
@@ -415,7 +429,11 @@ def wrap_graphql_impl(wrapped, instance, args, kwargs):
415429
else:
416430
bind_query = bind_graphql_impl_query
417431

418-
query = bind_query(*args, **kwargs)
432+
try:
433+
query = bind_query(*args, **kwargs)
434+
except TypeError:
435+
return wrapped(*args, **kwargs)
436+
419437
if hasattr(query, "body"):
420438
query = query.body
421439

0 commit comments

Comments
 (0)