On Aug 11, 2:51 pm, "Peter J. Farrell" <[email protected]> wrote:
> I've never seen or even heard of any behavior like this before.
>
> * What version of Mach-II are you using?
1.6.0
> * Are you using AJAX to do the form posts?
I do use ajax for some of the posts, but most are plain vanilla html
posts. I have been seeing this for a while on other applications that
I didn't write but never took the time to track them down.
>
> I bet if you use an HTTP header sniffer like Live Headers plugin for
> Firefox you'll see two requests being made by the browser. Another
> problem can be if you are using rewrite support in your webserver and
> it's rewriting stuff twice.
This is happening with the CF development server. I have no access to
production logs so I can't see if it is happening there, but since I
can see it on my localhost, I'm not assuming it can or cannot be seen
on other servers. In any case, it seems incredibly dangerous to allow
a browser to make two posts to the same url and have the second post
omit the request object. I'm not convinced that it is a browser error
since the second event is fired between the time the gateway function
finishes and the view pages are displayed. This is demonstrable by
moving a cfabort around the app. If it's in the gateway or listener
after everything is done, it only executes it once, but if the abort
is in a view page, it seems to spawn a second thread with no request
scope.
>
> I seriously doubt that it's any particular with the framework going on
> as there would be *a lot* of broken applications in the wild.
Notice that I explicitly said I knew it was something I was doing,
but don't know enough about the event handling process to properly
debug it since nothing I can see in the app is causing it. I do know
that is is a mach-ii issue, but that doesn't mean that it's not caused
by the application. This is why I'm trying to get to the bottom of it,
so we know what is is to avoid in the future. I could spend the next
couple of weeks stumbling around, but I'd rather not go through that
painful process if it's avoidable.
>
> .pjf
>
> davee said the following on 08/11/2009 10:06 AM:
>
> > I have an application that has an interesting problem that I have not
> > yet been able to get a handle on. Here is a synopsis;
>
> > After an event has been completely executed, it is executed again
> > without the request scope.
>
> > Specifically, when a form is submitted (happens on all browser
> > requested events), the event is processed normally, but after it is
> > finished, the event is triggered again, but this time, the form
> > variables do not exist at all, suggesting that the second instance is
> > being instantiated from within the mach-ii engine somehow. My
> > understanding of this that this should be impossible since the server
> > always passes the request scope to the back end engine. The fact that
> > there is no request scope and looking for the form structure which is
> > supposed to always be sent to the coldfusion engine turns up without
> > it seems impossible, but since it is happening, this is obviously not
> > true.
>
> > What I have discovered so far is:
>
> > * It's not in the filters
> > * It's not in the pluggins
> > * Almost every event gets triggered this way.
> > * it's not begin reported by the mach-ii logging tools (only shows
> > one instance being executed)
> > * it is being captured by the coldfusion cflog tag
> > * The only manipulation of the event queue is a redirect filter to
> > redirect events to a login and then to the original event.
> > * If I put a cfabort after processing the event (ie, inthe view
> > page or at the end of a function, the second instance never
> > occurs, so the workaround of putting a cfabort at the end of the
> > footer page would effectively stop this, but would also stop any
> > redirects or announces as well
> > * The other workaround is to put a check for the form variable into
> > each listener function and only call the gateway function if it
> > exists, but this only means that the application is doing things
> > we have no understanding of and that is not acceptable.
>
> > I have disabled the filters and plugins by;
>
> > * removing them from the config files
> > * renaming the functions inside so they can't be called
> > * forcing filters to ALWAYS return true
>
> > I've run the skeleton and it does not exhibit this behavior so I know
> > it MUST be something I'm doing.
>
> > The way I discovered it was using a function that deleted all records
> > associated with an event and rebuilt them based on the submitted
> > form. The first time, it deleted the records and created the new
> > records. Then it deleted the records and since the form structure,
> > normally in request scope didn't exist, it had nothing to create the
> > new records with and of course suggests that the whole process never
> > happened. but using cflog and cfabort, you can see that it is clearly
> > happening.
>
> > My question is this; Before I spend a great deal of time running this
> > to ground, has anyone ever seen this behavior?
>
> > Any help would be appreciated.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to Mach-II for CFML list.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/mach-ii-for-coldfusion?hl=en
SVN: http://greatbiztoolsllc.svn.cvsdude.com/mach-ii/
Wiki / Documentation / Tickets:
http://greatbiztoolsllc.trac.cvsdude.com/mach-ii/
-~----------~----~----~----~------~----~------~--~---