Given a "find" screen that hooks to controller that does an sql find. (this is a mysql db). Lets say you have a table with several thousand rows and the find that you do will return a result containing every row in the db. I.e. it takes 15 seconds or longer. When I do this find and then click the "stop" button in my browser to interrupt the query, then soon after try any other page of the app I get the "Rails application failed to start properly" error after what seems like enough time for the prior find to finally complete. I think what I'm seeing is that if you "stop" the browser, the stop is not conveyed into the application and is not stopping the database query that was launched causing the app to wait on the completion of the query. Is this possible? Known problem? How do you prevent this behavior?
on 2006-02-20 22:35
on 2006-02-20 23:46
Not sure if it is related, but I was getting that same exact message but because I was running under FastCGI and I had puts statments that were getting evaluated. FastCGI receives the puts as the output stream to be rendered to the browser, it doesn't match what it expects so it reports that Rails died. Perhaps your stop causes an error message to print that makes FastCGi confused? Bob E.
on 2006-02-21 06:19
I don't know what's going on with the rails error, but your brower stop button doesn't send anything to the app... it just stops the browser from waiting for the response. Welcome to the wonderful of web programming! b PS: Whe you have a long query like that you could return a "processing your request" progess page that has a refresh header to have it poll the server every few seconds. You could then put a "cancel query" link on there, that tells rails to canel the query. Of course, you'd still need to figure out how to tell the db to cancel the query....