New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[2.6.6] akka-http exceptions on every user request #7822
Comments
Hi @fommil, anything special about the requests (some specific non-standard header, for example)? |
just GET requests, with reasonably large lists of parameters (maybe 10 to 20)... btw @gmethvin has also seen this and prompted me to take a closer look. |
@fommil Parsing in akka-http uses exceptions for flow control, so these exceptions are expected. They don't collect stack traces and usually shouldn't be in the fast path, so there should be no performance hit. It might make sense to get rid of the Do you observe any wrong behavior corresponding to those exceptions? |
Looking at the UPDATE: I see, nothing strange going on, it's basically a weird way of checking that there is no further request on the line. We can add a check in |
… result ADT Before every attempt to parse an unknown (i.e. not modeled) header would end up in throwing and catching an exception. This does not really make sense as parboiled already provides for delivering these signals without an exception. Refs playframework/playframework#7822
… result ADT Before every attempt to parse an unknown (i.e. not modeled) header would end up in throwing and catching an exception. This does not really make sense as parboiled already provides for delivering these signals without an exception. Refs playframework/playframework#7822
It's one of the best ways of writing well-performing suspendable parsers in a straightforward way without having to employ code generation. A comparable functional variant would need the ability to return a continuation at each single point where a single char is read (= |
Anyway thanks for the traces, I think they will help improving a few things ;) |
… result ADT Before every attempt to parse an unknown (i.e. not modeled) header would end up in throwing and catching an exception. This does not really make sense as parboiled already provides for delivering these signals without an exception. Refs playframework/playframework#7822
One of those traces seems to point to an issue with parsing |
interesting... the headers that we're sending out from the server, or the ones we're receiving? |
@jrudolph it turned out to be simple to find this. we're using Regarding exceptions for control flow... did you know that in Emacs Lisp (and common lisp) the It's amazing how I have such different standards when I'm doing scala (a mere mortal's language) vs lisp (the language of the gods) I can probably setup YourKit to ignore the exceptions that don't have stacktraces. I'm still not sure why I see stacktraces. |
… result ADT Before every attempt to parse an unknown (i.e. not modeled) header would end up in throwing and catching an exception. This does not really make sense as parboiled already provides for delivering these signals without an exception. Refs playframework/playframework#7822
@jrudolph our header was easy to fix, but I'm still seeing This is flagged as "needs info"... is there anything else I can provide? |
oh, I see, your changes were in akka-http. I really wish github had a way of saying at the bottom of every PR "this is included since version tag ..." not just github hashes |
@fommil is this fixed for you? - So can this issue be closed? |
I guess this should have been closed originally anyway, because it was a bug in akka-something. |
I'm seeing many many exceptions with every user request when using the akka-http backend
YourKit really doesn't make it easy to export these things, but here's the best I could get
akka-http-exceptions.zip
The text was updated successfully, but these errors were encountered: