Severity Bug with no known workaround
Reproducability It happens each and every time
Verified true
Duplicate false
Reproduced false

Reported Configuration

Product ColdFusion 9.0.1
Release Final
OS Any

Open Bug 86960 (CFML Tag (General))

Submitted By: Adam Cameron on Wed Jun 29 2011

Summary: change in behaviour in CFABORT in CF9 breaks backwards compatIt looks like this E/R - - has been implemented.In previous versions of CF, CFABORT meant... ABORT. Now in CF9 it means "well... kinda abort, but actually keep doing some stuff". This is just daft.I can see how someone MIGHT want to exit a request and continue with onRequestEnd(), but CFABORT is not the way to do this. I would have thought using something like <CFEXIT type="request"> might make more sense.As for having similar behaviour for CFLOCATION situation, perhaps <CFEXIT type="relocate" URL="whatever">Or something else.But what should NOT have been done is to break the existing behaviour of these very very fundamental tags. Especially without actually documenting it (that I can find).I think this is serious enough that removal of the current behaviour should be treated as a hotfix. Reimplementation of another way of handling this could perhaps wait until a subsequent point release of CF.There is further discussion on this topic on Ben Nadel's blog, here: Adam

This bug has no comments.

Vote From Abram Adams on Mon Aug 8 2011

Vote From Owain North on Thu Jun 30 2011

Vote From Paul Connell on Thu Jun 30 2011

Vote From Peter Boughton on Wed Jun 29 2011

Railo supports a "type" attribute on cfabort tag. The default is "request" which means onRequestEnd does NOT execute. (behaviour for CF8 and below) It can be set to "page" which means onRequestEnd will execute. This is a sensible way to solve the problem for people that need onRequestEnd to fire, and will not break existing apps that rely on cfabort aborting the entire request.

Vote From Simon Baynes on Thu Jun 30 2011

I thought that where possible Adobe tried to preserve backward compatibility. In this instance this is entirely possible and absolutely should be hotfixed as quickly as possible. This is causing a bigger issue as our application is built expecting the CF8/7 behaviour of this tag, and now we either have to shelve plans to upgrade or re-engineer our application; neither of these are compelling. You fixing your application is very compelling. At the very least it would be good if there was someway of identifying in onRequestEnd that cfabort has been called so I could programmatically deal with it. Not pleased.

Vote From Ben Nadel on Wed Jul 13 2011

I agree that CFAbort feels like it should be final. I can undersand CFLocation allowing the onRequestEndHandler() to fire... but CFAbort should... abort.

Vote From duncan cumming on Fri Jul 1 2011

Vote From Henry Ho on Fri Aug 5 2011

Vote From Jack Drysdale Jr on Thu Jun 30 2011

Vote From james solo on Thu Jun 30 2011

This definately needs to be fixed.

Vote From Joseph DAngelo on Tue Aug 23 2011

Vote From Jason Sibre on Tue Sep 13 2011

We're using a custom framework (built in-house over the last several years) that relies on the old behavior. The new failure (as of 9.0.1) of cflocation to stop all processing (including onRequestEnd) has broken a large number of applications that we have written over the last few years using that custom framework. This includes both internal and public facing apps. In combination with the htmlEditFormat bug in 9.0.0, which was fixed in 9.0.1, we're really stuck between a rock and a hard place, with downgrading to 8.x looking like the only real option until Adobe gets their act together. Stop mucking about with things that break compatibility!

Vote From Justin Carter on Wed Sep 7 2011

Vote From Krzysztof Kobrzak on Thu Jun 30 2011

Vote From Gary Fenton on Wed Jun 29 2011

I'm following this blog post and comments and agree it needs changing.

Vote From Mark Gregory on Fri Jul 1 2011

Vote From Martin Gara on Mon Jul 11 2011

Can't believe a review panel allowed this - or maybe the review panel doesn't exist. Really bad to do this to a long term tag.

Vote From Duncan Nisbett on Fri Jul 1 2011

Vote From Reed Powell on Thu Jun 30 2011

Definitely a problem. You can see their reasoning behind this, but it should have been implemented in onrequestend() in such a way that onrequestend is made aware of why the request is ending, and with a cfadmin setting that says whether it should be called for cfabort/cflocation in order to remain compatible with pre-V9. That way you could turn it on if you wanted and in onrequestend test for this, or leave it turned off and not have to change any code in exsiting onrequestend()

Vote From Stephen Withington on Wed Jan 18 2012

Vote From Aaron Neff on Sat Oct 1 2011

+1, cflocation/cfabort should behave like it used to. +1 for Ben Nadel's idea of an onAbort() event handler in the Application.cfc: