Skip to content
This repository has been archived by the owner on Feb 24, 2024. It is now read-only.

enabled stack trace when the original error support it (in dev and event) #2361

Merged
merged 2 commits into from
Jan 24, 2023

Conversation

sio4
Copy link
Member

@sio4 sio4 commented Jan 22, 2023

What is being done in this PR?

  • enabled stack trace in the error page in development mode
  • enabled stack trace in error event from the default error middleware

What are the main choices made to get to this solution?

Previously, we deprecated support of errors.WithStack() from pkg/errors to reduce dependencies, because that is only useful when the user application supports it and is mostly useless or just verbose. Now, the fix just uses the format verb %+v to support it, and it can support the others if they support the verb too. Flexible, and no additional dependency.

The result of the fix

The routing error causes 404 and we don't need a trace for that. It is clear enough.

$ curl -H 'Content-Type: application/json' 'http://localhost:3000/unknown'
{"error":"could not find unknown","trace":"could not find unknown","code":404}

404 by database missing also clear enough, we don't care 4xx errors.

$ curl -H 'Content-Type: application/json' http://localhost:3000/name_othernames/e60c7e01/
{"error":"sqlite select one: sql: no rows in result set","trace":"sqlite select one: sql: no rows in result set","code":404}

We cannot get the stack if the user's handler just returned a simple error something like return fmt.Errorf("internal error").

$ curl -H 'Content-Type: application/json' 'http://localhost:3000/error'
{"error":"internal error","trace":"internal error","code":500}

When the user's handler returned an error support %+v, like return errors.New("internal error") with pkg/errors, we can see the stack trace.

$ curl -H 'Content-Type: application/json' 'http://localhost:3000/pkgerror'
{"error":"internal error","trace":"internal error\ncoco/actions.pkgErrorFunc\n\t/home/sio4/git/bt/coco/actions/app.go:157\ncoco/actions.App.func1.6\n\t/home/sio4/git/bt/coco/actions/app.go:99\ngit.luolix.top/gobuffalo/buffalo.assertMiddleware.func1...

Related PRs:
[1] #138
[2] #1643
[3] #1930
[4] #2352

fixes #1904
obsoletes #2358

@sio4 sio4 added the enhancement New feature or request label Jan 22, 2023
@sio4 sio4 added this to the v1.1.0 milestone Jan 22, 2023
@sio4 sio4 self-assigned this Jan 22, 2023
@sio4 sio4 requested a review from a team as a code owner January 22, 2023 08:40
@sio4 sio4 merged commit 63a5957 into v1 Jan 24, 2023
@sio4 sio4 deleted the enable-stack-trace-for-internal-errors branch January 24, 2023 07:42
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Error Trace Doesn't Include Stack Trace
1 participant