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

Log stack traces when a missing opentracing span is detected #10983

Merged
merged 2 commits into from
Oct 5, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/10983.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Log stack traces when a missing opentracing span is detected.
1 change: 1 addition & 0 deletions synapse/logging/opentracing.py
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,7 @@ def ensure_active_span_inner_2(*args, **kwargs):
"There was no active span when trying to %s."
" Did you forget to start one or did a context slip?",
message,
stack_info=True,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice---didn't know about this! (traceback.print_stack is my go-to)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sentry has a bug where each line of some stack traces gets turned into a separate issue. I'm hoping this makes it get filed correctly.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that's a synapse/twisted bug rather than a sentry bug. Basically uncaught exceptions end up getting printed to sys.stderr, but synapse intercepts things written to sys.stderr and sends them back to the logger, at ERROR level, line by line; there they are of course intercepted by the sentry handler.

The correct solution would be to not have uncaught exceptions printed to sys.stderr, and just let the interpreter-level uncaught exception hook handle them (where sentry will correctly report them). Unfortunately that's happening within the bowels of Twisted, so the next best solution is to make sure there aren't any uncaught exceptions coming from our code.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

interesting, thanks for clearing things up!

)

return ret
Expand Down