graphql-python / graphql-python/graphene

Can there be a way to mute stacktraces coming from certain exceptions?

Open
#1,265 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

✨ enhancement
Dominant language
Python
Stars
8.2k
Forks
818
PR merge metrics
No merged PRs in 30d

Description

**Is your feature request related to a problem? Please describe.**
Currently I'd get a stacktrace for every single validation that occurs:

```
2020-09-16 03:31:18.459 ERROR graphql.execution.utils 127.0.0.1 c7b7f54e-299d-478d-b3e3-ae2b5112921f : Traceback (most recent call last):
File "/Users/blei/myproject/venv/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
executor(resolve, reject)
File "/Users/blei/myproject/venv/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
return resolve(f(*args, **kwargs))
File "/Users/blei/myproject/venv/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
return next(*args, **kwargs)
File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/contextlib.py", line 75, in inner
return func(*args, **kwds)
File "/Users/blei/myproject/my_app/graphql.py", line 14, in wrapper_decorator
return func(*args, **kwargs)
File "/Users/blei/myproject/my_app/graphql.py", line 310, in mutate
raise MyAppError('Something')
graphql.error.located_error.GraphQLLocatedError: Something

```

Which seems like it would take up a LOT of disk space if someone were malicious + spammed the same endpoint many times and thus taking up all the disk space on my server.

**Describe the solution you'd like**
I would like the ability to mute exceptions (or specifically, stacktraces) coming from certain exceptions.

**Describe alternatives you've considered**
I've tried adding in my own `errors` field it seems like Graphene just mutes it.

**Additional context**
I can alternatively just create an `error` field or something, but then in the frontend I have to write in logic to handle the `error`/et. al and the `errors` field.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the exception and traceback handling shown through graphql.execution.utils, promise, and GraphQLLocatedError, then compare it with the reported Graphene errors field behavior. Define how callers would identify exceptions whose stacktraces are muted while keeping the GraphQL error response available; done means the behavior is configurable and documented with coverage for the requested case.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api, backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.