-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
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
Aborted transitions propagate error to Ember.RSVP.on('error',...) #12505
Comments
@OFbriggs my best guess is that this commit - 94e1035 about 28 days ago addresses the behavior around |
I doubt that my commit changed that particular behavior, but I personally agree that it seems better not to propagate this to RSVP, although I am not sure what exactly has changed. I might be looking into something related next week (routes instrumentation), so if no one else have figured it out by then I might uncover why as part of that work. |
It seems like some internals are not handling the rejection, this should be considered a bug. If the rejection is handled in the same turn, it does not propagate to |
Any update on this? I experience it in Ember 2.2.0 too. |
For now I'm just hardcoding the name of the error as a workaround.
|
Any progress on this? We're experiencing this on Ember 2.3 as well. |
+1 |
Edit: The Repository is no longer public. |
+1 |
2 similar comments
+1 |
+1 |
Thanks @stravid, this is exactly what I needed. Months of this bug and I finally found this thread and your workaround after much Google-fu. 🙇 |
Thanks for the kind words @devinus, I will try to write a little blog post so in the future not so much Google-fu is needed :) |
Thanks @stravid, but it still not a solution, maybe we can add more args on the error callback to check if the model's request fail. |
…Ember 2.X This is a quick and dirty proposal to not log to New Relic errors that aren't desired. In the current context, there is an issue where TransitionAborted errors that are regular redirects are reported and causing a lot of noise into New Relic analytics tooling. See emberjs/ember.js#12505 for more details on the current issue in Ember. This proposal is inspired by the change made for Sentry by this commit: https://github.com/stravid/datsu-frontend/commit/e4d8d9adc496dff4a310f47fd95f050a71d2c196
I just merged a fix in |
Experienced it in Ember 2.5 (we are in the process to update Ember version). Before we found the origin of the error we even had to upgrade our sentry subscription due the amount of false alarms...plus one afternoon/evening... |
I also lose some time to figure out this was a false positive error. using Nevertheless it still produces an error: It would save the time of a lot of emberjs new comers |
@chancancode or @rwjblue Planning any changes to this behaviour? |
…rted-sentry Ignore TransitionAborted errors in Sentry emberjs/ember.js#12505
@Boubalou @bichotll @binoculars @bkCDL @bugduino @cbou @chancancode @devinus @dschmidt @dtropp @gertjanwytynck @jbryson3 @jemware @olivia @remkoboschker @stefanpenner @stianpr @stravid @tchak @victor95pc is this still an issue, perhaps we should close, what do you think? |
I barely use Ember nowadays, but I suppose you could try to reproduce it by forking this and updating the Ember version? |
Same as @bichotll, I ended up doing backend works lately and not much into Ember anymore. I will let you guys decide whatever is good for this. :) |
I do not have the chance to test it |
I stoped using Ember, so I cant confirm it still a issue. |
It seems it still an issue : https://ember-twiddle.com/fe0e87339fd079e212d5713f5288ce58 |
Yes, it is still an issue (tested with ember-3.5.0). |
Still seeing this in 3.8 |
Reproduction on 3.10.0: https://github.com/robgarden/ember-transition-aborted-reproduction |
+1 on 2.18.2 |
For browser errors this seems like it is more of an issue of noise. However, with Fastboot this becomes a bit more difficult, since the throw will stop everything. I haven't been able to find a way to catch that particular error, and I suspect the issue is that the exception is being thrown inside of a promise error handler. Out of curiosity, what is the value in that particular throw? I'm wondering if it could either be removed, or if the error handler could be moved so that it could be overridden. |
@pixelhandler it's still an issue - I can reproduce it on Ember 3.8.3. I think we should consider removing |
I agree. It's very annoying issue. Its also blocking tests if you are testing if the transition has been aborted |
Our catch statements for transitions that may hit an abort explicitly check for this error. Still a pain though... |
Question to answer is if we ever care about In many cases you should consider where the user is going before you get to redirecting them and use redirects as a last resort. Those "spurious" errors being reported are actually indications of bad UX design I think. Of course I am affected by this issue because in many cases you don't know how to direct the user until after the model hook has fired... such as a field having changed on the backend. Still good to give user feedback about the transition instead of redirecting them silently. That's why I think it's a good thing that they are thrown, it gives the opportunity to alert the user to an unexpected transition and remind you of places where your user experience can be improved. |
@ezpuzz Tiered authorization (not authentication) is an area we always run into this. We store the transition for later so that we can provide good UX, and ease developer pain when implementing routes. We don’t know which routes need elevated permission until they are hit, in which case we abort and ask for elevated credentials before a retry. A general sweeping statement that in many cases it’s bad UX is a misnomer. Also to note, this error is raised in an async block, not offloaded to rsvp.on(‘error’ |
Also if you don't override |
@James1x0 sorry, what I meant is that there are useful cases of throwing the exception (one being identifying user pain points) but the current error doesn't include enough information right now to make it a useful bug report. In your use case you might want to record from what attempted transition the user was prompted for elevated credentials and that may happen at many possible places in your app. In that case we could improve the usefulness of the error here: https://github.com/tildeio/router.js/blob/604f7dfa246148a7737e1bb052b563c679b6d91a/lib/router/transition-aborted-error.ts by passing more about the transition here: https://github.com/tildeio/router.js/blob/604f7dfa246148a7737e1bb052b563c679b6d91a/lib/router/transition.ts#L401 It could be ignored otherwise as mentioned in my last comment. |
sentry: Ignore `TransitionAborted` errors According to emberjs/ember.js#18416 it looks like changing query params that have `refreshModel: true` causes an internal `TransitionAborted` error. This error is being ignored by Ember itself (see https://github.com/emberjs/ember.js/blob/v3.21.3/packages/`@ember/-internals/runtime/lib/ext/rsvp.js#L40-L42),` but Sentry also hooks into `RSVP.on('error')` and unfortunately reports these false positives (see emberjs/ember.js#12505) This PR actively ignores `TransitionAborted` errors in the `beforeSend()` hook of Sentry. r? `@jtgeibel`
Hi, @stravid about your message: |
@Mifrill sorry that is not possible, I made the repository private. |
@stravid okay, no problem, can you please then post a short snippet with an example which not contains any private info |
@Mifrill here you go: import Ember from 'ember';
import RavenLogger from 'ember-cli-sentry/services/raven';
export default RavenLogger.extend({
ignoreError(error) {
// Ember 2.X seems to not catch `TransitionAborted` errors caused by
// regular redirects. We don't want these errors to show up in Sentry
// so we have to filter them ourselfs.
//
// Once this issue https://github.com/emberjs/ember.js/issues/12505 is
// resolved we can remove this code.
return error.name === 'TransitionAborted';
},
}); |
still an issue in 4.x |
There is a larger underlying issue here that goes beyond the commonly reported Sentry clutter. This seems to be also the root cause of ember-fastboot/ember-cli-fastboot#202 as well which has a much greater impact as it can throw 500 errors or even crash fast boot server instances. The inconsistent error handling and async handling causes a lot of differing behavior based on the types of promises and behavior of I went in and created a reproduction repository with the different pitfalls of how In the example I take the basic docs redirect example and then do some fairly common changes to the method behavior or uses which drastically vary the behavior and response how For best replication, you'll need to pull that repo and run it locally since I currently don't have an instance of the fast boot server running publicly. |
no issue - "unhandled" `TransitionAborted` errors almost always occur as part of expected application behaviour and were causing a lot of noise in Sentry making it harder to track down real errors - when a `TransitionAborted` error occurs outside of expected behaviour it will usually be accompanied by other errors that do get logged - there's a long-standing Ember issue about how aborted transition errors should be handled at emberjs/ember.js#12505
no issue - "unhandled" `TransitionAborted` errors almost always occur as part of expected application behaviour and were causing a lot of noise in Sentry making it harder to track down real errors - when a `TransitionAborted` error occurs outside of expected behaviour it will usually be accompanied by other errors that do get logged - there's a long-standing Ember issue about how aborted transition errors should be handled at emberjs/ember.js#12505
As seen in this example, aborted transitions (through redirection or manual abortion) propagates a
TransitionAborted
error to the RSVP error handler while in 1.x it does not. Was this an intentional change or is the error an erroneous error?The text was updated successfully, but these errors were encountered: